SQL Server 언더스코어 이스케이프
어떻게 하면 밑줄을 피할 수 있을까요?
저는 다음과 같은 where 절을 쓰고 있으며, 마지막에 _d로 실제 엔트리를 찾을 수 있도록 하고 싶습니다.
Where Username Like '%_d'
LIKE에 대한 T-SQL 참조:
와일드카드 패턴 매칭 문자를 리터럴 문자로 사용할 수 있습니다.와일드카드 문자를 리터럴 문자로 사용하려면 와일드카드 문자를 괄호로 묶습니다.다음 표에 LIKE 키워드와 [] 와일드카드 문자를 사용하는 예를 몇 가지 나타냅니다.
고객님의 경우:
... LIKE '%[_]d'
@Lasse 솔루션이 맞는 것은 분명하지만 문제를 해결하는 다른 방법이 있습니다.T-SQL 연산자LIKE
는 옵션의 EXCAPE 구를 정의합니다.이 구를 사용하면 다음 문자를 패턴으로 이스케이프할 문자를 선언할 수 있습니다.
이 경우 다음 WHERE 절이 동일합니다.
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
추가 중[ ]
나를 위해 일을 했다
like '%[\\_]%'
이 솔루션들은 완전히 타당합니다.유감스럽게도 어느 쪽도 기대했던 대로 되지 않았습니다.저는 이 문제를 해결하기 위해 노력하지 않고 다음과 같은 작업을 수행했습니다.
select *
from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
like 패턴을 사용하여 비슷한 문제가 발생하였습니다.'%_%'
동작하지 않았습니다.질문에 나타나 있듯이:-)
사용.'%\_%'
이것도 처음처럼 작동하지 않았다\
"before like"로 해석됩니다.
사용.'%\\_%'
동작하고 있습니다.\\
(이중 백슬래시)는 처음에 싱글로 변환됩니다.\
(백슬래시) 및 같은 패턴으로 사용됩니다.
나한테는 통했어 그냥 탈출구를 써'%\_%'
SSIS v18.0에서는 어느 것도 기능하지 않기 때문에, 다음과 같은 작업을 실시합니다.
WHERE CHARINDEX('_', thingyoursearching) < 1
밑줄이 있는 문자열은 무시하려고 합니다.밑줄이 있는 것을 찾으려면 뒤집기만 하면 됩니다.
WHERE CHARINDEX('_', thingyoursearching) > 0
Gerardo Lima의 답변에 덧붙여, ESCAPE 조항의 이스케이프 캐릭터로서 백슬래시를 사용하려고 할 때 문제가 있었습니다.이로 인해 다음과 같은 문제가 발생했습니다.
SELECT * FROM table WHERE email LIKE '%@%\_%' ESCAPE '\'
이 문제는 느낌표로 전환하여 해결되었습니다.이것은 효과가 있었다:
SELECT * FROM table WHERE email LIKE '%@%!_%' ESCAPE '!'
언급URL : https://stackoverflow.com/questions/5821/sql-server-escape-an-underscore
'programing' 카테고리의 다른 글
DateTime을 VarChar로 변환하는 방법 (0) | 2023.04.07 |
---|---|
SQL Server에서 소수점 이하 자리 잘라내기(둥글지 않음) (0) | 2023.04.07 |
모든 테이블, 모든 열에서 특정 값 SQL Server 검색 (0) | 2023.04.07 |
를 저장하기 위한 올바른 SQL 유형은 무엇입니까?값이 24:00:00보다 큰 Net Timespan? (0) | 2023.04.07 |
CASE 문을 JOIN 조건으로 사용할 수 있습니까? (0) | 2023.04.07 |