将列传递给 UDF
Passing a column to a UDF
我有一个 table,它有很多 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.
我认为这不需要游标(我不希望有游标),但是有没有办法使用此函数验证该列上的所有记录?
谢谢,
房车
为此您可以使用常规 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;
如果函数 return 0 表示失败,1 表示通过,那么这将 return 只有全部通过时才为 1。
我有一个 table,它有很多 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.
我认为这不需要游标(我不希望有游标),但是有没有办法使用此函数验证该列上的所有记录?
谢谢,
房车
为此您可以使用常规 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;
如果函数 return 0 表示失败,1 表示通过,那么这将 return 只有全部通过时才为 1。