问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL数据库字符串按照‘|’分开

发布网友 发布时间:2022-05-02 01:30

我来回答

3个回答

热心网友 时间:2022-05-02 02:59

--方法0:动态SQL法declare @s varchar(100),@sql varchar(1000)set @s='1,2,3,4,5,6,7,8,9,10'set @sql='select col='''+ replace(@s,',',''' union all select ''')+''''PRINT @sqlexec (@sql)

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[f_splitSTR]GO--方法1:循环截取法CREATE FUNCTION f_splitSTR(@s varchar(8000), --待分拆的字符串@split varchar(10) --数据分隔符)RETURNS @re TABLE(col varchar(100))ASBEGIN DECLARE @splitlen int SET @splitlen=LEN(@split+'a')-2 WHILE CHARINDEX(@split,@s)>0 BEGIN INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1)) SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'') END INSERT @re VALUES(@s) RETURNENDGO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[f_splitSTR]GO--方法2:使用临时性分拆辅助表法CREATE FUNCTION f_splitSTR(@s varchar(8000), --待分拆的字符串@split varchar(10) --数据分隔符)RETURNS @re TABLE(col varchar(100))ASBEGIN --创建分拆处理的辅助表(用户定义函数中只能操作表变量) DECLARE @t TABLE(ID int IDENTITY,b bit) INSERT @t(b) SELECT TOP 8000 0 FROM syscolumns a,syscolumns b
INSERT @re SELECT SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID) FROM @t WHERE ID<=LEN(@s+'a') AND CHARINDEX(@split,@split+@s,ID)=ID RETURNENDGO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[f_splitSTR]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_splitSTR]') and objectproperty(id,N'IsUserTable')=1)drop table [dbo].[tb_splitSTR]GO--方法3:使用永久性分拆辅助表法--字符串分拆辅助表SELECT TOP 8000 ID=IDENTITY(int,1,1) INTO dbo.tb_splitSTRFROM syscolumns a,syscolumns bGO--字符串分拆处理函数CREATE FUNCTION f_splitSTR(@s varchar(8000), --待分拆的字符串@split varchar(10) --数据分隔符)RETURNS TABLEASRETURN( SELECT col=CAST(SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID) as varchar(100)) FROM tb_splitSTR WHERE ID<=LEN(@s+'a') AND CHARINDEX(@split,@split+@s,ID)=ID)GO

热心网友 时间:2022-05-02 04:17

--分隔字符串 模仿这个
 ALTER    function   f_splitstr(@SourceSql   varchar(8000),@StrSeprate   varchar(100))  
  returns   @temp   table(F1   varchar(100))  
  as    
  begin  
  declare   @ch   as   varchar(100)  
  set   @SourceSql=@SourceSql+@StrSeprate    
  while(@SourceSql<>'')  
                  begin  
                  set   @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)  
  insert   @temp   values(@ch)  
  set   @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')  
                  end  
  return  
  end  

 

--使用时

select  F1 from dbo.f_splitstr('a,b,c,d',',')

--将,换成|即可

 

热心网友 时间:2022-05-02 05:52

建议在程序中修改 否则效率比较低 如果非要这么做 那么说说具体情况 你上面那一串是在一个字段里的吗追问是在一个字段里,要把地点跟数据分开要做成一个两个字段的表,就是用:和|来分,求代码~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邯郸自驾游到青岛马壕运河遗址推荐线路 株洲自驾到青岛马壕运河遗址途径地方 梧州回青岛马壕运河遗址要几个小时 石嘴山到青岛马壕运河遗址要多少油钱 可不可以用开水敷脸 开水能不能敷脸 发动机和发电机区别?? 电音之王朴智妍MV的图片? 电音之王mv里跳舞的是谁 自己怎样开网站 怎样把一个网页设置为主页 驾考成绩在哪里查询 牛仔裤洗的时候,水是发黄的,与许多衣服在一起洗,浅色掉色吗 怎么查询自己的驾考成绩 陕西驾照考试成绩查询 怎样在手机查询西安驾考科目三成绩查询? 178体重160斤多大码鞋子 梦幻西游160鞋子属性范围 QQ邮箱被锁了怎么办 我的qq邮箱怎么被冻结了,怎么解开 iPhone 6的ios beta版本已过期是什么意思? ppt 原来有个按ctrl+幻灯片放映时会把幻片放映缩小到一个单独窗口,这样我就可以边编辑边观看放映了 苹果beta邀请码是多少 ppt2019少了插入图标,平滑切换和缩放定位,是怎么回事?怎么添加? 怎样把BHD文件转换为MP4 暴风影音下载完的视频文件bhd格式文件可以直接用格式工厂转为mp4格式吗? BHD格式转化为MP4格式怎么转 bhd格式怎么转换成mp4 最里面的板牙牙龈肿痛怎么办? 最里面的牙龈肿痛怎么治理? 嘴里最里面的大牙齿,牙龈肿痛有什么好的解决办法? 车轮突然爆胎怎么回事? 语言学概论这门课程与现代汉语 古代汉语 现代英语这类课程有什么区? 如何才能制作出简单又美味的凉拌海带丝呢? 世界上的另一个我读后感 新手怎样学习股票技能 新手如何选股票,学股票, 现在什么凉拌菜好吃 找人解封显示未能激活啥意思? 海带和花生米能同吃吗? 和oppo reno 8+256同级别的小米手机推荐?推荐型号 学习凉拌菜怎么样? 在“南方电网95598”微信公众平台能获取电子缴费票据吗? 在“南方电网95598”微信公众平台能获取电子缴费票据吗? 海尔卡萨帝冰箱的质量怎么样 电力用户的电子缴费票据在什么地方可以下载?通过微信可以吗? 谁了解卡萨帝冰箱质量怎么样 电力用户的电子缴费票据在什么地方可以下载?通过微信可以吗? 管道煤气和天然气的区别 华为c8650手机助手哪个最好? 最右发视频能赚钱吗?