具有特定Char数的列的查询值

时间:2017-04-19 01:25:47

标签: mysql

是否可以将单列的值拆分为两列,仅显示2个字符和4个字符,例如我有此查询:

SELECT colA FROM TableA

返回:

+ colA +
+------+
+ valA +
+ valB +
+  va  +
+  vc  +
+      +
+ valC +

所以我期待的结果是:

+ colA + colWith2Char+ colwith4Char +
+------+-------------+--------------+ 
+ valA +             +     valA     + 
+ valB +             +     valB     +
+  va  +     va      +              +
+  vc  +     vc      +              +
+      +             +              +
+ valC +             +     valC     +

我尝试使用char_length但是有更好的方法可以轻松获得此输出吗?

提前感谢建议的任何解决方案。

1 个答案:

答案 0 :(得分:0)

只需使用IF语句根据长度有条件地提取值。

SELECT colA,
    IF(LENGTH(colA) = 2, colA, NULL) AS colWith2Char,
    IF(LENGTH(colA) = 4, colA, NULL) AS colWith4Char 
FROM TableA;

注意:您也可以使用更标准的CASE语句执行此操作,但它更冗长。

SELECT colA,
    CASE WHEN LENGTH(colA) = 2 THEN colA ELSE NULL END AS colWith2Char,
    CASE WHEN LENGTH(colA) = 4 THEN colA ELSE NULL END AS colWith4Char 
FROM TableA;