Sql server 将列传递给UDF
我有一个表,它有很多SSN,需要传递给UDF,UDF将验证它,并说明它是否有效 例如,当我执行以下查询时,我得到一个错误:Sql server 将列传递给UDF,sql-server,sql-server-2008,sql-server-2012,udf,Sql Server,Sql Server 2008,Sql Server 2012,Udf,我有一个表,它有很多SSN,需要传递给UDF,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 subque
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.
Msg 512,第16级,状态1,第1行
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。
我不认为这需要游标(我不希望有游标),但是有没有一种方法可以使用此函数验证该列上的所有记录
谢谢
RV您可以使用常规的
选择进行此操作:
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;
如果函数返回0表示失败,返回1表示通过,则仅当全部通过时才返回1。非常好。这很有效。虽然我现在只得到所有的0。但这可能是另一个问题。但现在,这个问题已经解决了。非常感谢戈登!