2012-10-19 24 views
1

我有一列包含5A898,89KAS,89ASD等值。MySQL當特定數字是x時選擇

我想寫一個查詢,將只返回列的第三個數字是'A'的行。例如'89ASD'將被退回,但'89KAS'不會。我不確定正確的方法是什麼。常用表達?

所以......

SELECT column 
FROM table 
WHERE column = ? 

回答

2
WHERE column LIKE '__A%' 
        ^^-- 2 underscores 

應該做的伎倆。兩個「無論」字符,然後是A,然後是任何數量的任何東西。

+0

'SUBSTRING(column,3,1)='A''是多少效率? – eggyal

+0

差不多。由於您使用的是通配符和派生值,因此都不允許使用索引。 –

+0

同意,但模式匹配肯定會帶來一些重大開銷,而不是直接訪問字符串的第三個字符? – eggyal

0

也許你可以使用MySQL的SUBSTRING

SELECT column 
FROM table 
WHERE SUBSTRING(column,3,1) = 'A' 
0
where right(left(col,3),1) = 'A' 

,可以幫助... MarcB的回答是清潔

0

你可以用正則表達式做到這一點,但我認爲這可能是更容易只是一個字符串操作這裏應對:

SELECT column 
FROM table 
WHERE SUBSTRING(column,3,1) = 'A';