首页 > 解决方案 > 如果列中的任何条目中甚至有一个非英语字符,我希望在另一列中具有“真”

问题描述

列中有几个条目,非英文字符的英文字符,英文字符数字/符号,数字/符号的非英文字符等。如果列中的任何条目中甚至有一个非英文字符,我想要'TRUE'在相邻的列中。

SELECT * 
FROM companies
WHERE name LIKE '%[a-z]%';

此代码不起作用。

标签: postgresql

解决方案


您可以使用正则表达式来实现这一点。这是一个正则表达式,它将匹配所有ASCII可打印字符以及制表符 ( \t)、换行符/换行符 ( \n) 和回车符 ( \r)。

SELECT
    *,
    name ~ '[^\t\n\r\x20-\x7E]' AS has_bad_chars
FROM companies

现在这将匹配任何不是 AZ, az, 0-9, , ., ;, :, ", ',的字符/


推荐阅读