복붙노트

[SQL] SQL Server와 같은 포함 괄호 문자

SQL

SQL Server와 같은 포함 괄호 문자

나는 다음과 같은 열이있는 테이블이 SQL Server 2008을 사용 :

sampleData (nvarchar(max))

다음과 같이 이러한 행 중 일부에서이 열의 값은리스트 형식이 :

["value1","value2","value3"]

난 그냥 여는 괄호를 감지하여, 다음과 같은 형식의 목록과 모든 행을 반환하는 간단한 쿼리를 작성하는 것을 시도하고있다.

SELECT * from sampleTable where sampleData like '[%'

'['특수 문자이기 때문에 위의 쿼리 작업을하지 않습니다, 나는 내 인생 내 쿼리 내가 원하는 것을 있도록 브래킷을 탈출하는 방법을 알아낼 수 없습니다.

어떤 제안을 주셔서 감사합니다!

해결법

  1. ==============================

    1.

     ... like '[[]%'
    

    당신이 사용하는 [] 특수 문자 (또는 범위)를 둘러싸는

    SQL 서버 등에서는 '리터럴로 와일드 카드 문자 사용 "을 참조하십시오

    에디스 2011 년 24 뉴

    참고 : 닫기 괄호를 탈출 할 필요가 없습니다 ...

  2. ==============================

    2.이외에도 GBN의 대답에서, 다른 방법은 ESCAPE 옵션을 사용하는 것입니다 :

    이외에도 GBN의 대답에서, 다른 방법은 ESCAPE 옵션을 사용하는 것입니다 :

    SELECT * from sampleTable where sampleData like '\[%' ESCAPE '\'
    

    자세한 내용은 설명서를 참조하십시오

  3. ==============================

    3.여기에 그냥 더 참고 ... 당신은 문자 집합 내에서 브래킷 (또는 다른 특별)를 포함 할 경우, 당신은 단지 (이미 세트를 나타 내기 위해 괄호를 사용하고 있기 때문에) ESCAPE를 사용할 수있는 옵션이 있습니다. 디폴트 이스케이프 문자 (그것은 C의 배경에서 오는, 내가 처음 생각으로 기본적으로 백 슬래시되지 않음)가 없기 때문에 또한 당신은 ESCAPE 절을 지정해야합니다.

    여기에 그냥 더 참고 ... 당신은 문자 집합 내에서 브래킷 (또는 다른 특별)를 포함 할 경우, 당신은 단지 (이미 세트를 나타 내기 위해 괄호를 사용하고 있기 때문에) ESCAPE를 사용할 수있는 옵션이 있습니다. 디폴트 이스케이프 문자 (그것은 C의 배경에서 오는, 내가 처음 생각으로 기본적으로 백 슬래시되지 않음)가 없기 때문에 또한 당신은 ESCAPE 절을 지정해야합니다.

    예를 들면 내가 열이 인수하자 말 영숫자를 위해, '허용'문자 집합의 아무것도 외부가 포함 된 행을 꺼내려면 ... 우리는이 시작할 수

    SELECT * FROM MyTest WHERE MyCol LIKE '%[^a-zA-Z0-9]%'
    

    우리는 (때문에 선두 캐럿 ^ 문자) 목록에있는 모든 문자를하지 않은 것을 반환하는 그래서.

    우리가 다음 허용되는 문자 세트에 특수 문자를 추가하려면, 우리는 괄호 그래서 우리는 다음과 같이 이스케이프 문자를 사용해야합니다 중첩 할 수 없습니다 ...

    SELECT * FROM MyTest WHERE MyCol LIKE '%[^a-zA-Z0-9\[\]]%' ESCAPE '\'
    

    백 슬래시와 괄호를 (개별적으로) 선행 우리는 이스케이프 문자 백 슬래시를 사용하고 있음을 나타내는 것은 우리가 문자 세트를 표시하는 기능을 괄호 안에 그들을 탈출 할 수 있습니다.

    죄송합니다 벙어리 예를 들어,하지만 희망 누군가를하는 데 도움이

  4. from https://stackoverflow.com/questions/3661125/sql-server-like-containing-bracket-characters by cc-by-sa and MIT license