在tbv函数

时间:2018-02-01 12:33:08

标签: sql sql-server database rdbms

我有TBV功能。这个函数得到了几个输入参数。

CREATE FUNCTION [dbo].[fn]
(
 @id NVARCHAR(50),
 ...
 ...
) 

例如,我想检查 @id 是否为空且不是空格。

我正在叮叮当当地做这个

SELECT * FROM [FN_Table]() WHERE
COALESCE(@Id,'') !='' AND NULLIF(@id,'') !=null AND @Id=Id

但这是一种乏味的方式,我确信在SQL中只有newbbe并且不了解最佳实践会有更优雅和有效的方式。

2 个答案:

答案 0 :(得分:1)

如果您希望id不为空或空格,可以使用ltrim()

where ltrim(@id) <> ''

这也会隐式地检查NULL

我不确定你为什么要与零进行比较。根据您的问题,这不是必要的。如果您传入的是数字,则不应使用字符串类型。

答案 1 :(得分:0)

试试这个,查看ISNULL,然后获取BlankSpace Character Index

SELECT
CASE WHEN ISNULL(@ID,'')='' THEN 1
WHEN CHARINDEX(' ',@ID) >0 THEN 1
ELSE 0
END