将列传递给UDF

时间:2015-10-19 02:24:16

标签: sql-server sql-server-2008 sql-server-2012 udf

我有一个包含大量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.

我不认为这需要一个游标(我讨厌有这个),但有没有办法使用这个函数验证该列上的所有记录?

谢谢,

RV

1 个答案:

答案 0 :(得分:2)

您可以使用常规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;

如果函数返回0表示失败,1表示通过,那么只有全部通过时才会返回1。