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