2012-07-09 55 views
1
字符串中

比方說,例如,你有一個數據庫中的隨機字符串:APKHDP搜索字符與MySQL

我想搜索包含字符PHP(按順序)的所有字符串。所以我搜索PHP並返回上面的字符串。或者我搜索HPP,它什麼都不返回。

有沒有一個簡單的解決方案,使這可能,也許使用REGEX?這聽起來很簡單。但是,我發現的這些問題到目前爲止是非常複雜的。

我正在使用PHP(因此是示例!),並且我很高興將PHP集成到解決方案中,如果這是最好的解決方案。

+0

你不能只使用一個像選擇?也許我錯過了一些東西: select * from myTable where myField like'%PHP%' – 2012-07-09 10:21:17

+0

就我所知,這不是PHP相關的問題。如果您有隨機字段內容,並且只想顯示與特定字符串匹配的行,請使用: SELECT * FROM表WHERE字段LIKE「%PHP%」; – Ron 2012-07-09 10:22:57

+0

看起來LIKE對於這個問題並不好,因爲他們想匹配一個模式,而不是固定的字符串或部分字符串。 – Codecraft 2012-07-09 10:30:28

回答

2
SELECT * FROM table WHERE text_field REGEXP '.*P.*H.*P.*' 

The doc

+0

xdazz,你是明星。非常感謝你。剛剛通過我的REGEX cheatsheet完成了這個格式,現在它非常有意義。很好也很簡單。正是我在找的。 – user1100149 2012-07-09 11:03:29

2

使用MySQL正則表達式 - 你可以匹配的東西,但不能取代 - 例如:

選擇 'APKHDP' REGEXP( '[PHP]')

返回 '1'(即,正則表達式匹配字符串)。

儘管上面的正則表達式可能不適合您的需求(它匹配字母P,H和P的任何用法),所以您必須對其進行調整。

你可以讓你的正則表達式比較複雜,或者你可以做多的比賽:

SELECT field FROM TABLE WHERE field REGEXP(match1) AND field REGEXP(match2)..etc 

無論似乎簡單到你...

鏈接:MySQL Manual for REGEXP

+0

我最初是在思考這些問題。我想這會起作用,雖然有點混亂。雖然欣賞了迴應。任何解決方案都比沒有解決方案好! – user1100149 2012-07-09 11:05:43

0
SELECT * 
FROM `COLUMNS` 
WHERE `TABLE_NAME` 
REGEXP 'APKHDP' 
+0

不幸的是,這會返回確切的字符串。和LIKE一樣。 – user1100149 2012-07-09 11:06:56