有人可以指导我在这个查询中出错的地方。
SELECT ID,
IF REFERENCE_ID like '%[0-9]%'
THEN
REFERENCE_ID
ELSE
''
END
FROM TABLE
我实际上有一个表格,其中reference_id列有时会有数字值,有时只有“ - - ”或“ _- ”因此我想在这些情况下显示空白。
答案 0 :(得分:2)
您需要一个CASE语句来实现:
SELECT ID,
CASE
WHEN REFERENCE_ID like '%[0-9]%' THEN REFERENCE_ID
ELSE ''
END AS ReferenceId
FROM TABLE
答案 1 :(得分:0)
语法:
IF(condition,value_if_true,value_if_false)
SELECT ID,
IF (REFERENCE_ID REGEXP '[0-9]', REFERENCE_ID, '')
FROM tbl;
db<>小提琴here
答案 2 :(得分:0)
您可以使用REGEXP
和CASE
声明:
case WHEN REFERENCE_ID REGEXP '[0-9]'
THEN REFERENCE_ID
ELSE ''
END
答案 3 :(得分:0)
您尝试使用IF flow control structure作为表达式。那不是flow control statements的意思(强调我的):
MySQL支持IF,CASE,ITERATE,LEAVE LOOP,WHILE和REPEAT 构建存储程序中的流控制。它也是 支持存储函数中的RETURN。
您可以在此上下文中使用类似名称的IF
function,但我特别发现CASE ... END
structures更具可读性。 (有关详细信息,请参阅其他答案。)另外,我避免使用空字符串表示"空白"。 NULL
通常意味着什么,如果你的程序需要区分空和空,那就表明你的设计中的某些东西并不完全清楚。