我想根据长度从表中拆分值。 我有表格,其中我的列具有技术人员的id值(最多3位数)和技术人员合作伙伴(5位数)。我想将他们分成两个不同的技术人员,分为tech_id,合作伙伴分为partners_id
+-----------+
| tech |
+-----------+
| 64 |
+-----------+
| 60008 |
+-----------+
| 127;50047 |
+-----------+
| .... |
+-----------+
我尝试过这样的事情,但是在“'”附近我的语法不正确。第3行
SELECT (CASE
WHEN LEN(tech) > 4
) AS partners_id ,
(CASE
WHEN LEN(tech)< 4
) AS tech_id
FROM database
感谢您的建议。这个查询如何处理由;分隔的值?
答案 0 :(得分:1)
CASE语句的正确语法如下
SELECT CASE WHEN LENGTH(tech) > 4 THEN tech ELSE '' END AS partners_id ,
CASE WHEN LENGTH(tech) <= 4 THEN tech ELSE '' END AS tech_id
FROM database
如果长度小于4或者值为partners_id
列值,则根据技术列tech
列中的值长度将为空白。 tech_id
列基于其长度小于4的条件也是如此。
根据以下评论jarlh如果 ELSE 部分被忽略 NULL 值将包含在partner_id
和tech_id
列中,如果它们各自的条件在CASE
声明
SELECT CASE WHEN LENGTH(tech) > 4 THEN tech END AS partners_id ,
CASE WHEN LENGTH(tech) <= 4 THEN tech END AS tech_id
FROM database
答案 1 :(得分:1)
尝试联盟
select TECH as PARTNERS_ID, '' as TECH_ID
from database -- bad name here
where length(TECH) > 4
union
select '' as PARTNERS_ID, TECH as TECH_ID
from database
where length(TECH) <= 4
答案 2 :(得分:1)
尝试此查询
SELECT IFNULL((CASE WHEN length(tech) > 4 THEN tech END),'') AS partners_id ,
IFNULL((CASE WHEN length(tech)< 4 THEN tech END),'') AS tech_id
FROM database;