2012-02-04 7 views
1

인 경우 데이터가 \으로 시작하는 ColumnX에있는 모든 데이터를 찾으려고합니다.
내가 무엇을 찾고 있습니까 like '\%' 무엇입니까? 그러나 \은 처음에 있어야합니다.SQL 선택 열이

+1

'col like'\ % ''와 (과) 같이 작동하지 않습니까? –

+0

그게 효과가있다. '\'가 특별한 의미를 갖는 java 또는 C#과 같은 언어에서 쿼리하는 경우 쿼리 문자열 ('\\ %'또는 @ "\ %")을 먼저 이스케이프해야 할 수 있습니다. – StuartLC

+1

어떤 RDBMS를 사용하고 있습니까? –

답변

7

당신의 구문은 표준 SQL에서 일하는 것이 필요하다. 하지만 실제로 사용하고있는 DBMS와 버전 및 현재 설정이 무엇인지에 따라 달라집니다. 당신은 보통 백 슬래시를 얻을 수 \\\을 두 배로해야하므로

POSIX 스타일을 사용 문자열에서 탈출 PostgreSQL을 에서

는 해석한다.

SQL 표준은 달리 말합니다. 그래서 PostgreSQL 사람들은 몇 년 동안 표준 행동으로 전환 할 준비를하고 있었고, 특별한 escape-string-syntax E''과 설정을 escape_string_warning으로 설정하여 모호한 구문을 인식하도록했습니다.

버전 9.1에서는 마침내 "표준 준수"문자열로 전환되었습니다. 글로벌 사용자 구성이 standard_conforming_strings = on를 사용하는 경우 이제, 당신은 단순히 쓸 수 있습니다 : 그렇지

... col like '\%' 

당신이 작성해야합니다 :

... col like E'\\%' 

을 또한, \많은에 특별한 의미가 알고 있어야 클라이언트 프로그램 및 프로그래밍 언어. 문자열이 데이터베이스 엔진에 도달하기 전에 해석되면 다른 시간에 \을 두 배로 늘려야 할 수 있습니다. 예를 들어 related question을 참조하십시오.

+1

그리고 MySQL에서 백 슬래시는 이스케이프 문자로 'LIKE'패턴에서 특별한 의미가 있습니다. –

3

실제로 '\ %'는 필요한 것입니다. 다음 명령문은 columnX가 '\'로 시작하는 모든 데이터를 가져옵니다. 행운

select * from table_name where columnX like '\%' 
+0

Maby 데이터베이스 또는 프로그래밍 언어에 따라 "\"를 이스케이프해야합니다. – tbraun89

+0

SQL 문에서 '\'문자를 이스케이프 처리해야한다고 생각하지 않습니다. 나는 MySQL과 오라클을 위해 노력했고 효과가 있었다. –

+0

@ KorhanÖztürk - [MySQL에서 작동하지 않아야 함] (http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html)'\ %'\t 하나의'% '\\'문자는 패턴 이스케이프 문자입니다. –

1

이 시도 ...

select * from myTable where ColumnX like '\%'

좋은!

1

\ 문자열에서 메타 문자가 아닌 때문에,

enter image description here

관련 문제