当前位置:首页 » 编程语言 » sql字符串截取空格
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql字符串截取空格

发布时间: 2022-05-13 07:02:07

Ⅰ select 怎么截取空格前面的字符

sql语句可以截取指定字段后面的字符串,以sqlserver为例,需要用到charindex函数和substring函数。
如test表中有如下数据,要求截图str字段中逗号后边的内容。

可用如下语句:
select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;
结果截图:

charindex函数说明:
语法:
CHARINDEX ( expression1 , expression2 , [ start_location ] )
参数:
expression1
一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

substring函数说明:
语法:
substring( expression, start, length)
参数:
expression
字符串、二进制字符串、文本、图像、列或包含列的表达式
start
整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置
length
整数或可以隐式转换为 int 的表达式,指定子字符串的长度

Ⅱ sql如何将一条内容包含空格的记录拆分成多条记录

“张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”,现在要将此字符串按照“,”进行分离得到一组数据,现在可以得出这个函数传入变量有两个,一个是目标字符串,我们定义为@string,数据类型为nvarchar(500),选择nvarchar()是为了兼顾所有Unicode字符集,比如中文;另一个变量为分隔符,我们定义为@separator,数据类型为nvarchar(10),输出变量则定义为@array,一个单列列名为String,数据类型为nvarchar(500)的Table。

以字符串“张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”为例,首先得找到第一个“,”,然后把“张三”截取出来,然后将目标字符串变成“李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”,然后再找第一个“,”,把“李四”截取出来,依次类推,直到找不到“,”,有了这个思路,下面就直接实现,查找字符串在程序语言中一般用indexOf方法,截取一般用Substring方法,SQL SERVER中有SUBSTRING函数用来截取字符串,但是没有indexOf查找函数,取而代之的是CHARINDEX和PATINDEX函数,CHARINDEX用于完全匹配查找,而PATINDEX用于模糊匹配查找,根据我们的需求,选用CHARINDEX函数,整个SPLIT函数代码如下:

CREATEFUNCTION[dbo].[SPLIT]
(
--
@stringnvarchar(500),
@separatornvarchar(10)
)
RETURNS@arrayTABLE(Stringnvarchar(500))
AS
BEGIN
--Declarethereturnvariablehere
DECLARE@separatorIndexint,@tempStringnvarchar(500),@tagStringnvarchar(500)
--AddtheT-
SET@tagString=@string
SET@separatorIndex=CHARINDEX(@separator,@tagString)
WHILE(@separatorIndex<>0)
BEGIN
SET@tempString=SUBSTRING(@tagString,1,@separatorIndex-1)
INSERTINTO@array(String)VALUES(@tempString)
SET@tagString=SUBSTRING(@tagString,@separatorIndex+1,LEN(@tagString)-@separatorIndex)
SET@separatorIndex=CHARINDEX(@separator,@tagString)
END
SET@tempString=@tagString
IF(LEN(@tempString)>0)
INSERTINTO@array(String)VALUES(@tagString)
--Returntheresultofthefunction
RETURN
END
GO

测试

SELECT*FROMdbo.SPLIT(N'张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo',',')

Ⅲ SQL 怎么去掉字符串中间的空格,却保留最后的空格 例如:把+□1.123□□(□为空格) 变为 +1.123□□

我有个比较搓的办法,如果结尾的空格数是固定的话,那么可以先把所有的空格都去掉,然后在末尾加上两个空格

去空格:
update table_XXXX set size = replace(size, ' ','');

Ⅳ sql语句 怎么去掉一个字段里值的空格 如name=‘阿斯 ’

思路大概是这样:
实用ltrim或者rtrim函数去掉左边或右边符合条件的字符。
如果是oracle环境,看你这里都是字母在前数字在后的格式,假设旧列叫 col_old,新的字母列是col_str,新的数字列是col_num
update table1 set
col_str=rtrim(col_old,'1234567890'),
col_num=to_number(ltrim(col_old,rtrim(col_old,'1234567890')))

sql server 有没有这个函数不知道了,反正这是一个思路吧。供参考而已
sql没有这个东西,那我就给你提个思路吧,语句你自己写了,我没有环境。
用ASCII码和sql的ltrim和rtrim来做,你需要循环找到从左起每个字符都是ASCII>=65(9以上即字母)的,直到找到ASCII<=64的就结束,这样可以把这个字符部分的长度得到,在用trim函数截取一下就可以了。

Ⅳ sql 如何截取一个字段里某一字符串中间的字符

--这个查询需要注意的是qwer后的需要查询的字符串必须是一个空格,不能有的是一个空格有的是两个。也就是格式要固定。
--定义参数
create table #a (string varchar(max))
declare @sql varchar(max)
declare @a varchar(max)
select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--这个是要查询的字符串
---------------------------查询qwer后面的字符串----------------------------------------
while charindex('qwer',@a)<>0
begin
select @a=SUBSTRING ( @a,charindex('qwer',@a)+5,LEN(@a)-charindex('qwer',@a)-4)
insert into #a values (@a)
end
select SUBSTRING (LTRIM ( string) ,1,charindex(' ',LTRIM ( string))) as result from #a
--查询结果
result
zxcv
yuchor
abcd

Ⅵ sql字段空格截取

一般的数据库系统都回有trim函数
如果没有试试RTrim或者LTrim等函数

Ⅶ 用SQL怎么把一列所有字符串中包含的空格都删除呢

用REPLACE函数,把空格替换成
''。
例:去除
表table

col
列的空字符
去除空格符:update
table
set
col
=
REPLACE(col,'
','')
还有tab制表符(即char(9)),显示效果类似空格。
去除制表符:update
table
set
col
=
REPLACE(col,CHAR(9),'')

Ⅷ sql 截取字段中空格前的字符

用charindex和substring可以实现截取
顺便说一句,如果你得空格不是固定的,你就得定义一个字符串为"a,b,c,d,e,f.........z"
根据空格个数,获取列明,拼接语句.

Ⅸ 如何使用SQL截取空格字符串

mysql:select TRIM(字段名) from 表名

Ⅹ MSSQL 如何去掉数据库中字符串里的空格

MSSQL 如何去掉数据库中字符串里的空格?

例如:姓名,表格中习惯两个字的经常中间加入1-2个空格,
在MSSQL数据中用下面的语句,清除姓名中的空格:
UPDATE ERPUser SET truename = REPLACE(truename, ' ', '')

这个语句是替换一个空格为空。如果有的名字有几个空格呢,就多执行几遍,直到都替换完成。

去掉空格还有许多其他的语句,广泛学习,利用好,就会产生事半功倍的效果。

例如:
SQL 中使用 ltrim()去除左边空格 ,rtrim()去除右边空格 ,没有同时去除左右空格的函数,要去除所有空格可以用replace(字符串,' ',''),将字符串里的空格替换为空 。 例:去除空格函数。
declare @temp char(50)
set @temp = ' hello sql '
print ltrim(@temp) --去除左边空格
print rtrim(@temp) --去除右边空格
print replace(@temp,' ','') --去除字符串里所有空格
print @temp

>> 输出结果
hello sql
hello sql
hellosql
hello sql

其他数据库也有各自的语句:Oracle中TRIM(character_expression)等。

其他语句手机号码的问题,和空格无关:
如何decimal 或float型转化为varchar型:需要用到转换
UPDATE ERPUser SET Serils = CONVERT(varchar(20), CONVERT(decimal(18, 0), mob))

如果不转换,结果是科学计数法了。