如何根据正则表达式查询将是或否值插入标志列

How to insert yes or no value into flag column based on regex query

我有一个简单的更新,可以很好地分析美国的电话号码。它根据以下查询在 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'

有人知道怎么解决吗?谢谢

刚刚:

UPDATE database.table 
SET phone_flag = CASE WHEN phone REGEXP '^[0-9]{10}$' then 'Y' ELSE 'N' END
WHERE id = 7

理由:REGEXP是一个运算符,不要和=一起使用。

另请注意,我修改了正则表达式,开头为 ^,结尾为 $:这会强制 phone 准确地包含 10 位数字(不多,也没有其他字符)。如果这不是您想要的,您可以恢复该更改。