将列传递给 UDF
Posted
技术标签:
【中文标题】将列传递给 UDF【英文标题】:Passing a column to a UDF 【发布时间】:2015-10-19 02:24:16 【问题描述】:我有一个包含很多 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.
我不认为这需要一个游标(我不想拥有它),但是有没有办法使用这个函数来验证该列上的所有记录?
谢谢,
房车
【问题讨论】:
【参考方案1】:您可以为此使用普通的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。
【讨论】:
优秀。这很好用。虽然我现在只得到全 0。但这可能是一个单独的问题。但目前,这个问题已经解决。非常感谢戈登!以上是关于将列传递给 UDF的主要内容,如果未能解决你的问题,请参考以下文章
将 Pandas 列传递给函数时出现“ValueError:Series 的真值不明确”
如何使用 spark.sql 将表列传递给 rand 函数?