作者 主題: [MYSQL]搜尋語法的問題  (閱讀 4876 次)

0 會員 與 1 訪客 正在閱讀本文。

asako

  • 活潑的大學生
  • ***
  • 文章數: 242
    • 檢視個人資料
[MYSQL]搜尋語法的問題
« 於: 2006-04-13 13:50 »
我的 table 裡有一欄的資料有

聯宿
聯強

當我用 select * from test where cust_name like '聯強%'

MYSQL 會把

聯宿跟聯強一起抓出來。

這是 mysql 的 bug 嗎?

有無解決的方式?


我的 mysql 版本為 4.18
欄位型態為 varchar
character set =latin1
collation =  latin1_swedish_ci

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
[MYSQL]搜尋語法的問題
« 回覆 #1 於: 2006-04-13 13:57 »
聯宿 -> c1 70 b1 4a
聯強 -> c1 70 b1 6a

4a -> J
6a -> j

欄位改用 BLOB類型,
或是unicode格式

asako

  • 活潑的大學生
  • ***
  • 文章數: 242
    • 檢視個人資料
[MYSQL]搜尋語法的問題
« 回覆 #2 於: 2006-04-13 14:29 »
剛我自已又試了一下。發覺其它的解決方式

一:改欄位為 binary type 這跟上面的大哥說的BLOB的解決方式應是一樣的
二:改欄位的 collation 設成 latin1_bin
三:在sql 語法上加上 COLLATE latin1_bin
以我的例子

select * from test where cust_name like '聯強%'   COLLATE latin1_bin

以上都可以解決。

之所以不想換成 unicode 是因為 資料太大了,要dump出來再 dump 回去會花太多時間。