2011-02-18 7 views
0

정규식을 사용하여 vb.net에서 SQL 쿼리를 실행할 수 없습니다. 내가VB.net 정규식 문자 구문

Dim localConnection As New MySqlConnection = ConnectionNew(DBName) 
Dim da as MysqlDataAdapter 
Dim ds as new DataSet 
Dim rows as long 

SQLstatement= "SELECT `col1` FROM `myTable` WHERE `col1` REGEXP '^[A-Z]BC$'" 

da = New MySqlDataAdapter(SQLstatement, localConnection) 

rows = da.Fill(Ds) 

를 작성하는 경우

그것은 "ABC"를 포함하는 셀이 존재하더라도, null를 돌려줍니다. 데이터베이스에서 직접 실행하면 행이 올바르게 반환됩니다.

[A-Z]를 제거하면 두 경우 모두 정상적으로 작동합니다.

+0

REGEXP '^ [A-Z] BC "- REGEXP'^ [A-Z] BC '" – SergeS

+0

닫는 정규식이 맞지 않을 수도 있습니다. 어리석은 일이지만 어쩌면 바보 같은 따옴표가 필요합니까? 다음과 같이 : "SELECT'col1' FROM'myTable' WHERE'col1' REGEXP '^ [A-Z] BC'" – rskar

+0

죄송합니다. 오식. 나는 지금 그것을 편집했다. – Urbycoz

답변

0

"바이너리 문자열"이 관련 될 수 있습니까? 에서

: 바이너리 문자열을 사용하는 경우 http://dev.mysql.com/doc/refman/5.1/en/regexp.html

정규 표현식은 제외하고는 대소 문자를 구분하지 않습니다.

또한 멀티 바이트 문자에 대한 경고를 표시합니다.

바이트 현명한 방식으로 정규 표현식과 RLIKE 운영자 작업, 그래서 그들은 멀티 바이트 안전하지 않습니다 및 멀티 바이트 문자 세트와 예기치 않은 결과가 발생할 수 있습니다. 또한이 연산자는 바이트 값 및 악센트 부호가있는 문자로 문자를 비교합니다. 주어진 데이터 정렬로 동일하게 처리 되더라도 은 동일한 것으로 비교되지 않을 수 있습니다.

VB.Net은 유니 코드로 작동하기 때문에 일종의 문자 집합 또는 코드 페이지 맹 글링이 장면 뒤에서 일어날 수 있습니까?