2009-04-26 29 views
1

我的問題涉及在給定初始搜索字符串的情況下搜索MySQL表匹配的城市名稱列表,其目的是處理用html實體編碼的特殊字符(如ö等) )。使用正則表達式處理編碼字符的MySQL查詢

例如:

有一張名爲'城市'的表。城市名稱欄稱爲'名稱'。有兩個城市Hamberg(id 1)和h ä meenlinna(id 2)存儲爲h & auml; meenlinna。

有人使用字符串「Ham」進行搜索。標準查詢如

SELECT id, name FROM cities WHERE name LIKE '%Ham' 

將只返回第一個。

我有一個正則表達式從實體中解析出字符,但它是用PHP實現的,下面提供了它的完整性。

preg_replace("/&(.).*;/", '$1', $city_name); 

是否有查詢包含大多數具有實體的單個字符?

回答

1

您不應該在數據庫中使用HTML字符引用。相反,您應該選擇正確的encoding and collation並以純文本形式存儲數據。

+0

確實。 如果您在mysql中存儲「ö」,您可以通過做 指定不通過collat​​e不敏感的選擇選擇... WHERE name COLLATE utf8_general_ci like'%o' – 2009-04-26 19:55:12