我有一列包含5A898,89KAS,89ASD等值。MySQL當特定數字是x時選擇
我想寫一個查詢,將只返回列的第三個數字是'A'的行。例如'89ASD'將被退回,但'89KAS'不會。我不確定正確的方法是什麼。常用表達?
所以......
SELECT column
FROM table
WHERE column = ?
我有一列包含5A898,89KAS,89ASD等值。MySQL當特定數字是x時選擇
我想寫一個查詢,將只返回列的第三個數字是'A'的行。例如'89ASD'將被退回,但'89KAS'不會。我不確定正確的方法是什麼。常用表達?
所以......
SELECT column
FROM table
WHERE column = ?
WHERE column LIKE '__A%'
^^-- 2 underscores
應該做的伎倆。兩個「無論」字符,然後是A,然後是任何數量的任何東西。
也許你可以使用MySQL的SUBSTRING
SELECT column
FROM table
WHERE SUBSTRING(column,3,1) = 'A'
where right(left(col,3),1) = 'A'
,可以幫助... MarcB的回答是清潔
你可以用正則表達式做到這一點,但我認爲這可能是更容易只是一個字符串操作這裏應對:
SELECT column
FROM table
WHERE SUBSTRING(column,3,1) = 'A';
'SUBSTRING(column,3,1)='A''是多少效率? – eggyal
差不多。由於您使用的是通配符和派生值,因此都不允許使用索引。 –
同意,但模式匹配肯定會帶來一些重大開銷,而不是直接訪問字符串的第三個字符? – eggyal