sql字符串切割 sql的字符串截取
2024-11-10 09:55 - 立有生活网
SQL如何分隔字符查询结果?
substring(@s,len(@s),1)<>'|'select substr(t.times,1,2) from from t_customer t where rown--这个查询需要注意的是qwer后的需要查询的字符串必须是一个空格,不能有的是一个空格有的是两个。也就是格式要固定。um=1
sql字符串切割 sql的字符串截取
sql字符串切割 sql的字符串截取
union
select substr(t.times,4,2) from from t_customer t where rownum=1
sql拆分字符串
create table #a (string varchar(max))用substr(string,1,1)就可以啊
SET如果|的位置不确定,字串长度不确定就用
标示从字符串:‘a|b|c’的第1位开始 第2次出现'|'的位置
以该函数判断位置再做截取
SUBSTR('a|b|c',1,CHARINDEX('|','a|b|c',1,1)-1)
得出'a'
SUBSTR('a|b|c',CHARINDEX('|','a|b|c',1,1)+1,CHARINDEX('|','a|b|c',1,2)- INSTR('a|b|c','|',1,2)-1)
得出'b'
SUBSTR('a|b|c',CHARINDEX('|','a|b|c','|',1,2)+1)
得出'c'
--先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库
CREATE
FUNCTION
mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串
(@str
nvarchar(2000),--源字串
@sn
int,
--提取序号
@Deli
varchar(1)
--分隔符
)RETURNS
varchar(100)
AS
BEGIN
@first
int,@last
int,@result
varchar(1000),@sn0
int
select
@sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while
@sn0!=@sn
select
@sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
if
set
@result=''
else
@RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN
(@RESULT
GO
--查询方法:
DECLARE
@A
VARCHAR(100),@B
VARCHAR(100),@C
VARCHAR(100)
@A=DBO.MYSPLIT('A|B|C',1,'|')
,@B=DBO.MYSPLIT('A|B|C',2,'|')
,@C=DBO.MYSPLIT('A|B|C',3,'|')
@A,@B,@C
字符串不固定的方法
declare @T table (sortid int,mychar varchar(10))
declare @i int
declare @str varchar(20)
set @str = 'a|b|c|d|e|f|g|h|i|j'
set @i = 1
while charindex('|',@str) > 0
insert into @T values(@i, substring(@str,1,charindex('|',@str)-1))
set @str = substring(@str,charindex('|',@str)+1,len(@str))
set @i = @i + 1
insert into @T values(@i, @str)
select from @T
DECLARE @STR VARCHAR(10)
,@a varchar(1)
, @b varchar(1)
,@c varchar(1)
SET @STR= 'a|b|c'
SET @a = substring(@STR,1,CHARINDEX('|',@STR)+1)
SET @b = substring(substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)),1,CHARINDEX('|',substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)))+1)
SET @c = substring(substring(substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) ,CHARINDEX('|',substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) )+1,LEN(substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) ) -CHARINDEX('|',substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) )),1,CHARINDEX('|',substring(substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) ,CHARINDEX('|',substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) )+1,LEN(substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) ) -CHARINDEX('|',substring(@STR,CHARINDEX('|',@STR)+1,LEN(@STR) -CHARINDEX('|',@STR)) )))+1)
SELECT @a, @b, @c
DECLARE @a nvarchar(1), @b nvarchar(1),@c nvarchar(1)
select @a=substring('a|b|c',1,1),@b=substring('a|b|c',3,1),@c=substring('a|b|c',5,1)
sql怎么样截取查询出来的字符串?
)ASleft(name,
CHARINDEX
(',',NAME)-1)
FROM
表逗号前就是逗号左边了、
left函数
取指定字段某位置左边的字符串、
CHARINDEX(',',NAME)-1指定某字段中逗号开始的位置,-1是去除‘,’本身的位置
MYINSTR('a|b|c','|',1,2 ) 函数SQL
select
substring
_index(name,',',1)
from
sql 拆分字符串
alter FUNCTION [dbo].[SpitString]
(@string nvarchar(500),--被分的字符串
@sp nvarchar(100) --分隔符
)RETURNS
@_strings TABLE
(id int,
string nvarchar(64),
inx int,
str1 nvarchar(65)
BEGIN
declare @count int --计数
set @count=0
declare @index int
declare @one nvarchar(64)--取下来的一节
set @index=Charindex(@sp,@string)
while(@index>0)
set @one=left(@string,@index-1)
set @count=@count+1
insert into @_strings (id,string,inx,str1) values(@count,@one,@index,@string)
set @string=right(@strinyuchorg,len(@string)-@index)
set @index=Charindex(@sp,@string)
insert into @_strings (id,string,inx,str1) values(@count+1,@string,@index,@one)
RET@last-@first-1<0URN
END
go
调用:
SELECT FROM [dbo].[SpitString] ('asdads,ad,sadsa,d,w,dsa,dsa,d,sad,sa,' ,',')
请注意:为了调试方便,便于理解,返回的表中多加入了两个字段,这样,字串分解过程一目了然,您可以表值参数及插入语句中将其去掉。
SQL SERVER调试方法:1.在查询分析器中进行调试,可以查看执行结果,错误报告,错误行定位等,还可以进行效率分析。也可以加入一些调试中间结果或字段(如本例)进行调试。
2.跟踪指令执行进行调试:参过探查器,打开,文件,新建,跟踪,选择及登录参数,选择一个模板,点击运行,即可开始跟踪SQLSERVER相关动作
sql语句如何将一个字符串拆分重组
declare @str varchar(20)
set @str = 'abcdefg'
declare @i int
select @count = 0
select @i = len(@str)
declare @str1 varchar(20)
select @)ENDstr1 = ''
while (@i >表截取字段值里个逗号左边的全部字符串 @count)
select @count = @count + 1
select @str1 = @str1 + substring (@str,@count,1) + '.'
print @str1
这个字符串,你可以从表字段中获取,也或者可以直接赋值,@str1就是你想要的输出。
sql 如何截取一个字段里某一字符串中间的字符?
--定义参数
declare @sql varchar(max)
declare @a varchaselect @a=SUBSTRING ( @a,charindex('qwer',@a)+5,LEN(@a)-charindex('qwer',@a)-4)r(max)
select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--这个是要查询的字符串
---------------------------查询qwer后面的字符串----------------------------------------
insert into #a values (@a)
select SUBSTRING (LTRIM ( string) ,1,charindex(' ',LTRIM ( string))) as result from #a
--查询结果
rSet @i = CharIndex(@Splits,@Sql)esult
zxcv
abcd
SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
--定义参数
declare @sql varchar(max)
declare @a varchar(max)
select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--这个是要查询的字符串
---------------------------查询qwer后面的字符串----------------------------------------
insert into #a values (@a)
select SUBSTRING (LTRIM ( string) ,1,charindex(' ',LTRIM ( string))) as result from #a
--查询结果
result
zxcv
abcd
sql问题:将截断字符串或二进制数据。
nvarchar(200),@s0你的字段容量太小,插入数据时导致数据溢出..
Create DataBase zhusu
GO
create table 旅馆(
编号 varchar(10) primary key,
名称 varchar(20) not null,
地址 varchar(50) not null,
备注 varchar(40)
)create table 投宿(
编号 varchar(10) not null,
名称 varchar(20) not null,
一周价格 varchar(5),
varchar(10),
电话 bigint,
)go
alter table 投宿
add constraint uk_name
unique(名称)
insert 旅馆 values('艺苑度村','洲乡艺苑路17号',null)
insert 旅馆 values('0002','理想饭店','洲乡理想街111号',null)
insert 旅馆 values('0003','乐工旅社','洲乡乐工街110号',null)
insert 旅馆 values('0004','莫内花园','洲乡莫内街109号',null)
insert 旅馆 values('00end05','鲤鱼山庄','洲乡鲤鱼池108号',null)
insert 旅馆 values('0006','丰田纳园','洲乡丰田体育管',null)
insert 旅馆 values('0007','岁月民宿','洲乡岁月路100幢',null)
insert 旅馆 values('0008','大爱电场','洲乡大爱路',null)
insert 旅馆 values('0009','布拉格酒店','洲乡布拉格广场',null)
insert 旅馆 values('0010','路遇餐厅','洲乡路遇路1号',null)
insert 投宿 values('0002','理想饭店','1200','订房部',8777777)
insert 投宿 values('0003','乐工旅社','2300','蔡饱',8666666)
insert 投宿 values('0004','莫内花园','5000','富翁',8588888)
insert 投宿 values('0005','鲤鱼山庄','3800','范匹',8333333)
insert 投宿 values('0006','丰田纳园','2800','蔡雕',8111111)
insert 投宿 values('0007','岁月民宿','800','师仔',8222222)
insert 投宿 values('0008','大爱电场','1800','蔡饱',8666666)
insert 投宿 values('0009','布拉格酒店','8800','富翁',8588888)
insert 投宿 values('0010','路遇餐厅','1500','邦邦',8555555)
这样应该就不会有问题了..
不过foreign key (编号) references 旅馆(编号) 这句话我没看懂什么意思...去了能不...= =!
在SQL中怎么把一列字符串拆分为多列,请高手赐教
begin--首先,你是按什么规则拆? 我举个例子 你要按字段中SELECT的逗号拆开,设字段名叫text
select substring(text,1,charindex(',',text)-1) as [before], substring(text,charindex(',',text),len(text)) as [after] from table
sql截取字符串!
foreign key (编号) references 旅馆(编号)@s
nvarchar(20),@s1
nvarchar(200),@s2
nvarchar(200)
set
@s0='默认风格'
set
@s='默认风格|#007168|23|紫色风格|#E8D6FE|21|蓝色风格|#bad2fe|22'
@r1
int,@r2
int
if
set
@s=@s+'|'
set
@r1=B 和 C的值同理,不理解的再问吧charindex(@s0,@s)
--文字开始位置
select
@s1=substring(@s,@r1+len(@s0)+1,len(@s))
--文字+“|”以后的子串
set
@r2=@r1+charindex('|',@s1)+len(@s0)
--子串中个“|”相对于原串的起始位置
set
@s2=substring(@s1,charindex('|',@s1)+1,len(@s1))
--个“|”后的子串
set
@r2=@r2+charindex('|',@s2)
substring(@s,1,@r1-1)+substring(@s,@r2+1,len(@s))
你可以把@s0改成任意的什么“风格”。
把这段代码修改一下,可以作成一个函数,把@s0和@s作为参数,的print作为返回值。
如果单单只是完成以上所说
delete
from
db
where
like
'%紫色风格|#E8D6FE|21%'
不就行了?
如果是想替换成空.则用
update
db
set
=replace(name,'紫色风格|#E8D6FE|21','')
sql 查询按指定的字符串个数分割字符串 比如123456789 按3个字符串分割 输出结果如下 123 456 789
nameSELECT SUBSTRING('123456789',1,3) +' '+SUBSTRING('123456789',4,3) +' '+S--用charindex和substring这2个函数UBSTRING('123456789',6,3)
农村人芦丁鸡养殖 养芦丁鸡挣钱吗

八个农村创业的好项目 农村适合的创业项目有哪些 从芦丁鸡的品种来看,芦丁鸡是由斑翅山鹑和蓝胸鹑杂交出来的产物,很多人误以为芦丁鸡是鹌鹑鸟的一类,但是事实上并不是。芦丁鸡与传统的···
养殖小龙虾需要螺丝吗 养小龙虾需要盐水吗

龙虾怎么养殖? 亲虾的选小龙虾怎么养殖 1、场地建设择 新手养殖小龙虾,对小龙虾的每一个事项都要做好管理的,任何一个环节都对小龙虾的生长有着很深的影响。但是不管如何养殖小龙虾,它是···
银川水蛭养殖箱批发厂家 银川水蛭养殖箱批发

水蛭怎么养水蛭的投饵管理 4、其他作用 随着水蛭用价值的深度开发,其市场需求潜力巨大。养殖水蛭的人越来越多,以下是由我整理关于水蛭怎么养的内容,希望大家喜欢! 银川水蛭养殖箱批发厂···