2014-05-07 54 views
1

我有一種奇怪的問題。我正在編寫一個公司內部應用程序的控制面板,該應用程序在後端使用MySQL數據庫。MySQL與LIKE,通配符和前導零選擇

我現在有這樣的語句:

SELECT * FROM users WHERE ldap_user LIKE '%--Searchterm--%' OR Firstname LIKE '%--Searchterm--%' OR Lastname LIKE '%--Searchterm--%' OR id LIKE '%--Searchterm--%'; 

其中 「--Searchterm--」 我是通過PHP提供。現在我希望能夠交出一個帶有前導零的searchterm,並且仍然能夠將它與未加註的id相匹配。

我知道,我可以用PHP剝離零值,但如果可能的話,我想要一個純粹的MySQL解決方案。

我不知道要尋找什麼,因爲我發現的一切都沒有解決選擇查詢,而是在搜索除id之外的其他字段。

如果可能,我更喜歡一個查詢,它不使用一些野JOIN,而是普通的MySQL。

+0

不是很理解它,你的意思是,查詢搜索數據時返回的數據應該是零?你可以在數據庫中顯示一些示例數據併爲搜索顯示示例輸入嗎? –

+0

是searchterm始終是數字嗎?如果不是,那麼你不能使用'WHERE ... LIKE CONCAT('%',searchterm + 0,'%')'這個簡單的技巧,因爲這會把你傳入的任何實際的搜索字符串弄糟。 –

+0

你的意思是搜索倒排變體,如:「'--Searchterm - 0000000'LIKE ldap_user」和ldap_user的值爲'% - Searchterm - %'? – Justinas

回答

0

Thanks @Mattt!

的解決方案是使用

[...] OR id LIKE TRIM(LEADING '0' FROM '--Searchterm--'); 

- >捂臉

我沒有,雖然TRIM,而且不知道,你可以簡單地使用這種方式。

再次感謝!