用sql sever 写一个标量值函数 传参数 @TCJIDS varchar(100), @XMID int , 用到的表TZ_XMXX_SBGNJXM 字段 有XMID int ,YJBM varchar(8000),要求查询表TZ_XMXX_SBGNJXM 中YJBM 包含TCJIDS,注意YJBM和TCJIDS 可以多个用英文逗号分割,最后返回0或者1,0表示不存在1表示存在
时间: 2024-03-12 16:50:27 浏览: 47
以下是一个满足要求的 SQL Server 标量值函数:
```sql
CREATE FUNCTION dbo.fn_check_yjbm_contains_tcjids(@TCJIDS varchar(100), @XMID int)
RETURNS bit
AS
BEGIN
DECLARE @Result bit = 0;
DECLARE @YJBM varchar(8000);
SELECT @YJBM = YJBM
FROM TZ_XMXX_SBGNJXM
WHERE XMID = @XMID;
IF CHARINDEX(@TCJIDS, @YJBM) > 0
BEGIN
SET @Result = 1;
END
RETURN @Result;
END
```
这个函数接受两个参数,@TCJIDS 和 @XMID,分别表示要查询的关键词和项目 ID。函数中使用了 SELECT 语句来查询表 TZ_XMXX_SBGNJXM 中对应项目的 YJBM 字段。然后使用 CHARINDEX 函数来检查 @TCJIDS 是否包含在 @YJBM 中,如果包含则设置 @Result 为 1,否则为 0。最后返回 @Result。注意,这里使用了 bit 类型来表示返回值,0 表示不存在,1 表示存在。
使用方法如下:
```sql
SELECT dbo.fn_check_yjbm_contains_tcjids('TCJIDS1,TCJIDS2', 1) AS Result;
```
其中第一个参数是要查询的关键词,多个关键词用英文逗号分割,第二个参数是项目 ID。函数将返回 0 或 1,表示是否存在对应的关键词。
阅读全文