我试图弄清楚如何识别表中包含特殊字符但不包含空格的任何行。
原因是我正在查看名字字段的数据质量,并希望标识具有特殊字符(例如(-,. etc))的任何行
以下内容几乎标识了我所需要的内容,但也带了一些空格(乔尔·史密斯),这些空格不应该包含在内。
@for (int i = 1; i <= pageCount; i++)
{
<li>
<a href="/movesearchresult?page=@i&query=@searchQuery">Page @i</a>
</li>
}
非常感谢
答案 0 :(得分:0)
Postgres正则表达式似乎不支持否定先行,这是我们可以在此处使用的一种选择。取而代之的是,我们可以使用以下模式来表达您的匹配要求:
^[^\- ]*[^\-a-z0-9 ][^\- ]*$
这表示要匹配任意数量的非空格/连字符,后跟一个非字母/空格/连字符,再接着是任意数量的非空格/连字符。在Postgres中将变为以下内容:
^[^\-[:space:]]*[^\-a-z0-9[:space:]][^\-[:space:]]*$
这是一个示例查询:
WITH yourTable AS (
SELECT 'abc' AS col UNION ALL
SELECT 'abc ' UNION ALL
SELECT 'abc $' UNION ALL
SELECT 'abc$' UNION ALL
SELECT 'a-bc' UNION ALL
SELECT 'a-bc ' UNION ALL
SELECT 'a-bc $' UNION ALL
SELECT 'a-bc$'
)
SELECT *
FROM yourTable
WHERE col ~* '^[^\-[:space:]]*[^\-a-z0-9[:space:]][^\-[:space:]]*$';
abc$