如何根据正则表达式查询将是或否值插入标志列
Posted
技术标签:
【中文标题】如何根据正则表达式查询将是或否值插入标志列【英文标题】:How to insert yes or no value into flag column based on regex query 【发布时间】:2020-10-23 22:24:56 【问题描述】:我有一个简单的更新,可以很好地分析美国的电话号码。它根据以下查询在 phone_flag 列中正确插入 Y。
UPDATE database.table SET phone_flag = 'Y'
WHERE id BETWEEN 1 and 100000
AND (phone REGEXP '[0-9] 10');
如果 N 值与表达式不匹配,我想插入它,但我不知道该怎么做。我使用的查询。
UPDATE database.table
SET phone_flag = CASE
WHEN phone = REGEXP [0-9]10 then 'Y'
ELSE 'N' END
WHERE id = '7'
有人知道怎么解决吗?谢谢。
【问题讨论】:
在REGEXP
之前去掉=
并将正则表达式放在引号中。您在第一个查询中使用了正确的语法。
请注意,REGEXP
匹配列中的任何位置。所以这将匹配abc1234567890xyz
。它还将匹配超过 10 个字符的数字。如果应该正好是 10 个字符,请使用 ^
和 $
锚定它。
【参考方案1】:
只是:
UPDATE database.table
SET phone_flag = CASE WHEN phone REGEXP '^[0-9]10$' then 'Y' ELSE 'N' END
WHERE id = 7
理由:REGEXP
是一个运算符,不要将=
与它一起使用。
还请注意,我修改了正则表达式,开头为 ^
,结尾为 $
:这会强制 phone
包含 恰好 10 位数字(不多,也没有其他字符)。如果这不是您想要的,您可以恢复该更改。
【讨论】:
以上是关于如何根据正则表达式查询将是或否值插入标志列的主要内容,如果未能解决你的问题,请参考以下文章