mssql 查询Split数据

字段二的数据是:0,5,0,ff,bb,ds,ym,dsf
SELECT 字段1,字段2 FROM 表名 WHERE 字段1 = 0 And Split(字段2 , ",")(4)='bb' ORDER BY ID desc

'Split' 不是可以识别的 函数名。那要怎样查询字段2数组第4段是bb的数据
利用 like 无法解决,因为第0、1、2、3、字段的字符都不会一致

需要Asp页面SELECT 查询筛选,表名是MyName,列是Mycont,完整语句怎么写?
最新回答
﹎梦醒的夏天╰╯

2024-05-16 11:10:35

首先,要说明一下,MSSQL是没有内置Split函数的,需要你自己去创建标量值函数的,创建标量值函数的t-sql脚本如下:

use your_db_name 
go
create function Split-- 创建标量值函数Split
(
 @express nvarchar(2000), -- 字符串表达式
 @character char(1),      -- 分隔字符
 @position int            -- 获取数组第几个元素,下标从1开始
)
returns nvarchar(100)
as
begin
declare @index int=1;
declare @pos int=0;
declare @tch nvarchar(50);

if @position<=0 set @position=1;-- 下标从1开始

while @index<=len(@express) begin
  if substring(@express,@index,1)=@character begin
if @pos=@position break;-- 已到达指定的索引
else -- 未到达
  begin
    set @tch='';
    set @pos+=1;
  end
  end
  
  if substring(@express,@index,1)<>@character
    set @tch+=substring(@express,@index,1);
    
  set @index+=1;
end

return @tch;-- 返回指定索引的元素
end
go

-- 用法示例:
declare @str nvarchar(50)='0,5,0,ff,bb,ds,ym,dsf';
print dbo.Split(@str,',',4)-- print 'bb'
go
追问
要在Asp 页面输出怎么写
追答
SELECT * FROM MyName WHERE dbo.Split(Mycont,',',4)='bb'