2015-10-19 37 views
0

我有一个表有很多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. 

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

感谢,

RV

回答

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; 

如果功能n对于失败返回0,对于传递返回1,那么只有全部通过,这将返回1。

+0

优秀。这工作得很好。尽管我现在只能得到全0。但这可能是一个单独的问题。但现在,这个问题已经解决。非常感谢戈登! – rvphx