Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将列传递给UDF_Sql Server_Sql Server 2008_Sql Server 2012_Udf - Fatal编程技术网

Sql server 将列传递给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

我有一个表,它有很多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 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。但这可能是另一个问题。但现在,这个问题已经解决了。非常感谢戈登!