[sql-server] 밑줄을 이탈하는 SQL Server

밑줄 문자를 어떻게 피합니까?

다음 where 절과 같은 것을 작성하고 끝에 _d로 실제 항목을 찾을 수 있기를 원합니다.

Where Username Like '%_d'



답변

LIKE에 대한 T-SQL 참조 :

와일드 카드 패턴 일치 문자를 리터럴 문자로 사용할 수 있습니다. 와일드 카드 문자를 리터럴 문자로 사용하려면 와일드 카드 문자를 괄호로 묶습니다. 다음 표는 LIKE 키워드와 [] 와일드 카드 문자를 사용하는 몇 가지 예를 보여줍니다.

귀하의 경우 :

... LIKE '%[_]d'


답변

분명히 @Lasse 솔루션이 맞지만 문제를 해결하는 또 다른 방법이 있습니다. T-SQL 연산자 LIKE는 선택적 ESCAPE 절을 정의 하여 다음 문자를 패턴으로 이스케이프 할 문자를 선언 할 수 있습니다.

귀하의 경우 다음 WHERE 절은 동일합니다.

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';


답변

이러한 솔루션은 전적으로 의미가 있습니다. 불행히도 어느 것도 예상대로 작동하지 않았습니다. 번거 로움을 피하기 위해 해결 방법을 찾았습니다.

select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name


답변

이것은 나를 위해 일했다, 그냥 탈출을 사용하십시오.
'%\_%'


답변

이들 중 어느 것도 SSIS v18.0에서 나에게 도움이되지 않았으므로 다음과 같이 할 것입니다 :

WHERE CHARINDEX('_', thingyoursearching) < 1

.. 여기서 밑줄이있는 문자열을 무시하려고합니다. 밑줄이있는 것을 찾으려면 뒤집으십시오.

WHERE CHARINDEX('_', thingyoursearching) > 0


답변