gpt4 book ai didi

sql - Azure Synapse Analytics 中的 regexMatch 和 regexReplace 函数不会在简单的 SELECT 语句中生成结果

转载 作者:行者123 更新时间:2023-12-03 03:22:32 25 4
gpt4 key购买 nike

我正在尝试在 Azure Synapse 的专用 SQL 池脚本中执行简单的 SELECT 语句。其中之一是:

SELECT regexMatch('abctest','^[A-Za-z]*$');

该语句应该返回True,因为它测试字符串是否仅包含字母。相反,它会生成以下错误消息:“regexMatch”不是可识别的内置函数名称。'

当我检查官方文档时,内置函数是可用的,并且该函数的任务符合预期。 https://learn.microsoft.com/en-us/azure/data-factory/data-flow-expression-functions

我还找到了此页面,其中解释了如何创建管道/数据流来执行正则表达式这些命令。 https://learn.microsoft.com/en-us/azure/data-factory/tutorial-data-flow

我尝试过并且成功了,但是我需要regexMatch 和 regexReplace 函数在简单的 SQL 脚本和 SELECT 命令中工作,它看起来更简单且不那么繁琐。我有什么办法可以做到吗?或者使用数据流是唯一可能的方法吗?

提前致谢。

最佳答案

Azure 数据流表达式与 SQL 查询函数不同。它们并不相同。

目前regexMatchregexReplace不是内置函数,并且在 Synapse SQL 中不受支持。您可以看到我对 regexReplace 遇到了同样的错误.

enter image description here

此外,我在 SQL 数据库中检查了相同的内容,它给出了相同的错误,这意味着 SQL 也不支持这些。

说到Dataflow表达式,它们与spark更相关,而不是与SQL函数相同。

您可以为 SELECT regexMatch('abctest','^[A-Za-z]*$'); 构建等效的 SQL 查询使用LIKENOT LIKE .

SELECT CASE WHEN 'abctest' NOT LIKE '%[^A-Za-z]%' THEN 0 ELSE 1 END AS res;

enter image description here

对于regexReplace ,您需要根据需要使用SQL的字符串函数的组合。

查看此 SO Answer 中给出的一些解决方法通过@Mukus使用replace , LIKE , PATINDEX , LEFTRIGHT .

如果您使用数据流,最好使用数据流中的函数来实现您的要求,因为可能无法复制 SQL 查询中的所有正则表达式。

关于sql - Azure Synapse Analytics 中的 regexMatch 和 regexReplace 函数不会在简单的 SELECT 语句中生成结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76680053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com