You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2025 CTP2.0中使用REGEXP_LIKE函数报“未识别内置函数”错误求助

SQL Server 2025 CTP2.0中使用REGEXP_LIKE函数报“未识别内置函数”错误求助

我完全懂你现在的困惑——明明SSMS的智能提示都能认出REGEXP_LIKE函数,结果实际执行SQL的时候却报错说它不是内置函数,尤其是你已经特意用上了SQL Server 2025 CTP2.0的Docker镜像,按照教程来操作却碰壁,确实挺闹心的。

咱们一步步来排查解决这个问题:

1. 先确认当前数据库的兼容级别

新的内置函数通常要求数据库使用对应版本的兼容级别,SQL Server 2025的默认兼容级别是170。如果你的数据库还是沿用了旧版本的兼容级别(比如160对应SQL Server 2022),新函数可能无法被识别。

你可以先执行以下SQL查看当前数据库的兼容级别:

SELECT name, compatibility_level 
FROM sys.databases 
WHERE name = '你正在使用的数据库名';

如果返回的compatibility_level不是170,就执行下面的语句修改:

ALTER DATABASE 你正在使用的数据库名 
SET COMPATIBILITY_LEVEL = 170;

2. 确认你连接的实例确实是2025 CTP2.0

有时候我们可能会在SSMS里同时连接多个SQL Server实例,一不小心就切到了旧版本的实例上。你可以再执行一次:

SELECT @@VERSION;

仔细核对返回的版本信息,确保确实是Microsoft SQL Server 2025 (CTP2.0) - 17.0.700.9这个Docker实例,而不是本地安装的其他版本。

3. 检查CTP2.0是否真的包含REGEXP_LIKE函数

虽然官方明确表示REGEXP_LIKE会加入SQL Server 2025,但CTP(社区技术预览版)是分阶段推送功能的——有些新功能可能要到后续的CTP版本(比如CTP3.0及以后)才会正式实装。

你可以去查一下SQL Server 2025 CTP2.0的官方发布说明,确认这个函数是否在该版本的功能清单里。如果官方说明里没提到这个函数,那大概率是CTP2.0还没上线这个功能,得等后续预览版。

4. 绕开约束,直接测试函数可用性

你可以先跳过CHECK约束,直接在查询窗口里调用函数试试:

SELECT REGEXP_LIKE('test@example.com', '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');

如果这个简单的查询也报错,那基本可以确定当前实例确实不支持这个函数;如果能正常返回结果,那可能是CHECK约束的语法有细微问题,但从你给出的代码来看,语法是没问题的。

另外补充一点:SSMS能识别函数是因为它的智能提示是基于预定义的函数列表(提前加入了2025的新函数),但实际执行是依赖于连接的SQL Server实例的功能支持,所以会出现“编辑器认得到,实例不支持”的情况,这是正常的版本不同步现象。

如果最后发现CTP2.0确实还没实装这个函数,你可以暂时用旧的方式实现校验(比如用LIKE表达式或者自定义函数,不过自定义函数在CHECK约束里有一定局限性),或者等后续的CTP版本推送。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 07:58:11