将列传递给 UDF

Passing a column to a UDF

我有一个 table,它有很多 SSN,需要传递给 UDF 来验证它并判断它是否有效。

例如,当我执行以下查询时出现错误:

SELECT [dbo].[f_Is_Valid_SSN_Regex]( (select SSN from dbo.table_name))

我得到的错误

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

我认为这不需要游标(我不希望有游标),但是有没有办法使用此函数验证该列上的所有记录?

谢谢,

房车

为此您可以使用常规 select

SELECT SSN, [dbo].f_Is_Valid_SSN_Regex(SSN)
from dbo.table_name;

如果你想看看是否所有都通过了,那么使用聚合:

SELECT MIN(dbo.f_Is_Valid_SSN_Regex(SSN))
from dbo.table_name;

如果函数 return 0 表示失败,1 表示通过,那么这将 return 只有全部通过时才为 1。