使用LIKE运算符select语句中的MySQL案例
是否有可能在一个MySQL SELECT
语句中结合CASE
语句和LIKE
运算符?
例如,我试图查询一个数据库,以两种格式之一存储数据在一个单一的列(这是可怕的,伤了我的头,但我不能改变数据,所以它是什么)。 所以有时列numbers
会有像“6901xxxxxxxx”这样的数据,有时会有像“91xxxxxxxxxxx”这样的数据。
我想要做的是查询数据像这样 –
SELECT CASE digits WHEN LIKE "6901%" THEN substr(digits,4) WHEN LIKE "91%" THEN substr(digits,2) END as "digits", FROM raw
这显然是行不通的,但林希望这是可能的。
使用CASE
的第二种forms应该工作:
SELECT CASE WHEN digits LIKE '6901%' THEN substr(digits,4) WHEN digits LIKE '91%' THEN substr(digits,2) END as digits FROM raw
而且,在SELECT
的结尾处有一个逗号。
尝试
SELECT CASE true WHEN digits LIKE "6901%" THEN substr(digits,4) WHEN digits LIKE "91%" THEN substr(digits,2) END as "digits", FROM raw
也许使用LEFT()
?
SELECT CASE WHEN LEFT(digits, 4) = '6901' THEN substr(digits,4) WHEN LEFT(digits, 2) = '91' THEN substr(digits,2) END FROM raw
应该比LIKE
更LIKE
。
假设数字的数量是不变的,你可以使用这样的东西:
SELECT IF(digits > 919999, MOD(digits, 100), MOD(digits, 10000) FROM raw
加0
以匹配您的实际位数。