CREATE FUNCTION [dbo].[LDTJ_GetGNJYJBM] ( @TCJIDS varchar(100), @XMID int ) RETURNS int AS BEGIN declare @sf int select @sf=COUNT(1) from TZ_XMXX_SBGNJXM where XMID=@XMID and ','+YJBM+',' like '%,'+CONVERT(varchar(50),@TCJIDS) +',%' if(@sf>0) set @sf=1 return @sf END GO优化一下代码@TCJIDS可能有多个时逗号分割循环查询,同时存在再返回1
时间: 2024-03-13 17:42:26 浏览: 104
以下是一个优化过的 SQL Server 标量值函数,可以处理 @TCJIDS 可能有多个时逗号分割循环查询,并且只有当所有关键词都存在于 YJBM 中才返回 1:
```sql
CREATE FUNCTION [dbo].[LDTJ_GetGNJYJBM] ( @TCJIDS varchar(100), @XMID int )
RETURNS int
AS
BEGIN
DECLARE @Result int = 0;
DECLARE @Count int;
SELECT @Count = COUNT(*)
FROM TZ_XMXX_SBGNJXM
WHERE XMID = @XMID;
DECLARE @TCJIDS_TABLE TABLE (TCJID varchar(100));
INSERT INTO @TCJIDS_TABLE (TCJID) SELECT value FROM STRING_SPLIT(@TCJIDS, ',');
SELECT @Result = COUNT(*) FROM @TCJIDS_TABLE t WHERE EXISTS (
SELECT 1 FROM TZ_XMXX_SBGNJXM WHERE XMID = @XMID AND ','+YJBM+',' LIKE '%,'+t.TCJID+',%'
);
IF @Result = (SELECT COUNT(*) FROM @TCJIDS_TABLE)
BEGIN
SET @Result = 1;
END
ELSE
BEGIN
SET @Result = 0;
END
RETURN @Result;
END
```
这个版本中,首先使用 COUNT 函数获取到符合条件的记录数,然后使用表变量 @TCJIDS_TABLE 来保存 @TCJIDS 中的关键词。使用 STRING_SPLIT 函数将 @TCJIDS 字符串分割成多个关键词,并插入到表变量中。然后使用嵌套的 SELECT 语句来查询是否存在对应关键词,如果所有关键词都存在于 YJBM 中,就设置 @Result 为 1。
使用方法与之前的版本相同,只需要将函数名替换为新版本的函数名即可:
```sql
SELECT dbo.LDTJ_GetGNJYJBM('TCJIDS1,TCJIDS2', 1) AS Result;
```
其中第一个参数是要查询的关键词,多个关键词用英文逗号分割,第二个参数是项目 ID。函数将返回 0 或 1,表示是否所有关键词都存在于 YJBM 中。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)