簡體   English   中英

帶有LIKE運算符的Select語句中的MySQL Case

[英]MySQL Case in Select Statement with LIKE operator

是否可以在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應該有效:

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

應該比LIKELIKE

假設位數是常數,你可以使用這樣的東西:

SELECT IF(digits > 919999, MOD(digits, 100), MOD(digits, 10000) FROM raw

添加0以匹配您的實際位數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM