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的字符串截取


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怎么样截取查询出来的字符串?

)AS

left(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)

print

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

name

SELECT SUBSTRING('123456789',1,3) +' '+SUBSTRING('123456789',4,3) +' '+S--用charindex和substring这2个函数UBSTRING('123456789',6,3)

提前批志愿填报与录取规则顺序

提前批次是高校录取程序中的一个特殊阶段,在常规批次之前进行,为符合特定条件的考生和院校提供优先录取机会。了解提前批志愿填报与录取规则至关重要,以确保考生充分利用这一机会。 提···

联想y471a 联想y471a换喇叭

大家好,今日天天来为大家解答以上的问题。联想y471a,联想y471a换喇叭很多人还不知道,现在让我们一起来看看吧! 联想y471a 联想y471a换喇叭 联想y471a 联想y471a换喇叭 联想y471a 联想y471a换喇叭 1、···

上海有什么好吃的美食 上海有什么好吃的美食

上海有什么特产好吃的 上海特产有南翔小笼包、上海梨膏糖、高桥松饼、五香豆、马陆葡萄等。 上海有什么好吃的美食 上海有什么好吃的美食带回家的 上海有什么好吃的美食 上海有什么好吃的美···