我有一個關於mysql的基本問題。在我的表'table'中,我有一個名爲'foo'(String)的列。我想這樣做:MySQL - 如何在WHERE子句中爲列名使用通配符?
SELECT * FROM table WHERE %foo% LIKE '%thing%'
但它顯然是不正確的。提前致謝。
我有一個關於mysql的基本問題。在我的表'table'中,我有一個名爲'foo'(String)的列。我想這樣做:MySQL - 如何在WHERE子句中爲列名使用通配符?
SELECT * FROM table WHERE %foo% LIKE '%thing%'
但它顯然是不正確的。提前致謝。
SELECT * FROM table WHERE key like '%sth%'
是的,這很明顯,但我的問題是,較短的'鍵'必須是......的一部分,而不是其他方式 – radek
'KEY'是一個保留關鍵字。需要引用backtick.s –
假設表中有akey1,bkey2,ckey3等列...有沒有辦法搜索像'xyz'這樣的%key%這樣的公共值? –
select * from table where key like '%sth%'
首先關鍵是保留關鍵字。所以你可能需要添加
方括號
引用反引號左右。其次,你需要正確使用通配符。許多答案已經告訴你。根據樣本數據進行設置。
Set @sth:= 'joh'
方法2是使用REGEXP
。方法3是使用instr
。
select * from landlord
where instr(`key`,@sth) > 0
;
你也可以嘗試match
against
。但是,部分字符串似乎不起作用。
這是一個FullText
搜索和你的表必須能夠做到這一點。 MYISAM is the only table type that can do fulltext search。假設你沒有啓用它,那麼你可以使用以下Alter
行模式表。使用FullText
搜索,您實際上在key
列中添加了索引。索引搜索變得更快。
`ALTER TABLE mytable ENGINE = MYISAM;`
Alter Table mytable
Add FULLTEXT(`key`)
;
Select * from mytable
where match(`key`)
against(%@sth% IN BOOLEAN MODE)
;
不連接在MySQL中'[]'。標識符用反引號引用。 –
@MichaelBerkowski或者,更正確地(給出適當的設置),用雙引號。 – 2013-01-02 02:45:41
@pst在默認情況下,MySQL是ANSI_QUOTES嗎?我不這麼認爲。 –
所以你要列名使用通配符在'鍵%''爲KEY1,KEY2匹配,.etc'? –
我需要的是使用'%'操作符不是爲了嚴格,而是從列名中獲得值 – radek
可能出現[使用相同值SQL匹配多個列]的重複(http://stackoverflow.com/questions/14116292/match-multiple- column-with-same-value-sql) –