【发布时间】:2017-02-02 16:37:34
【问题描述】:
我经常编写 SQL 脚本,在 WHERE 语句中重复几行以消除记录。
例如:
SELECT *
FROM tblAll
WHERE Field1 NOT LIKE '%AA%'
AND Field1 NOT LIKE '%BB%'
AND Field1 NOT LIKE '%00'
如果我不必每次都添加这些行,那么出错的可能性就会降低。如何创建一个可以帮助我执行此操作的函数?:
SELECT *
FROM tblAll
WHERE Field1 NOT LIKE Function
这是我目前拥有的:
CREATE FUNCTION [dbo].[ExcludeField1]
(
@Field1 varchar(max),
@Date datetime
)
RETURNS VARCHAR(15) AS
BEGIN
DECLARE @Field1 varchar(15)
DECLARE @Date datetime
SELECT TOP 1 @Field1=Field1 ,@Date=Date
FROM tblAll A
WHERE A.Date=@Date
AND Field1 NOT LIKE '%AA%'
AND Field1 NOT LIKE 'BB%'
AND Field1 NOT LIKE '%00%'
ORDER BY LEN(A.Field1) ASC ;
RETURN @Field1
END
GO
但我觉得我错过了一些重要的东西。该函数仅提供我认为对 Field1 有效的值。所以我未来的脚本应该是:
Field1 = @Field1
哪里不对?
【问题讨论】:
标签: sql sql-server function tsql