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

select 怎么截取空格前面的字符
2025-03-23 14:28:06
推荐回答(3个)
回答1:

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 的表达式,指定子字符串的长度

回答2:

如果你是想将查询结果去掉空格,可以用trim
select trim(table.column from table
如果你是想要查询结果中,空格前面的字符,可以使用以下方法
select substr(table.column,1,instr(table.column,' ')) from table
就是数据库简单的字符串函数的应用。

回答3:

兄弟思路是这样的主要用的函数
PATINDEX('% %',CC)查找空格所在的位置,然后结合RIGHT 和LEFT函数;层层来取。
具体语句如下:(你的的时候将字段CC换成你的字段,CYG表换成你的表)
SELECT LEFT(CC,PATINDEX('% %',CC)-1) AS A,
LEFT(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)),PATINDEX('% %',RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))-1) AS B,
LEFT(RIGHT(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)),LEN(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))-
PATINDEX('% %',RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))),
PATINDEX('% %',RIGHT(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)),LEN(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))-
PATINDEX('% %',RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))))-1) AS C,
LEFT(RIGHT(RIGHT(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)),LEN(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))-
PATINDEX('% %',RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))),LEN(RIGHT(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)),LEN(RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))-
PATINDEX('% %',RIGHT(CC,LEN(CC)-PATINDEX('% %',CC)))))-