是否有列出 SQL Server 中所有内置函数的系统表或系统视图?

Posted

技术标签:

【中文标题】是否有列出 SQL Server 中所有内置函数的系统表或系统视图?【英文标题】:Is there a system table or system view that lists all built-in functions in SQL Server? 【发布时间】:2020-02-27 18:53:23 【问题描述】:

我正在构建一个应用程序,用户可以使用它在 SQL Server 数据库中创建自己的用户定义函数。我必须以某种方式验证用户选择的函数名称不等于内置函数的名称(例如 avg、concat、...),因为这会破坏应用程序。

有没有办法查询所有内置函数(不是 UDF)的名称,例如系统视图等?

【问题讨论】:

这能回答你的问题吗? is there any way to get the list of the inbuilt function of the sql server? 这不会给你CONCATAVG、@SurajKumar 之类的东西。老实说,OP 描述的内容听起来像是XY Problem 和注射的噩梦。 @Larnu 现在撤回了接近投票。 用户创建自己的函数....会出什么问题??老实说,这个想法太可怕了。 @Larnu 出于安全原因,我可以理解您的观点,并且我非常了解即将出现的问题,但这并不能真正帮助我找到答案。我知道 SQL Server Management Studio 可以在对象资源管理器中列出所有系统函数,所以必须有一些方法来查询它们 【参考方案1】:

我认为这是你命名函数的规则,只要你是开发者。这意味着您的函数将始终在数据库中具有您的前缀,如 mf_ 这可能意味着 myfunction_ 和您用户的函数名称。在您的代码中,始终将 mf_ 前缀放在用户的函数调用前面,检查它是否存在并使用它。

【讨论】:

我希望找到一种绕过前缀的方法,但由于没有内置函数或类似功能的系统表,我想使用前缀是唯一可行的方法。

以上是关于是否有列出 SQL Server 中所有内置函数的系统表或系统视图?的主要内容,如果未能解决你的问题,请参考以下文章

sql server中是不是有可以将数字转换为单词的内置函数

有没有办法获取sql server的内置函数列表?

MS SQL Server - 列出所有会话上下文值

无法限制用户使用内置 SQL Server 函数

sql server的一些日期操作函数

如何在 SQL SERVER 的列中列出所有可能的组合?