SQL server列 截取字符串

某列情况如图,我想提取出括号里的字符串显示出来,材料费,资料费 什么的。怎么样写

第1个回答  2012-04-06
要是BIZNAME有两个括号就不行了
select substring(bizname,charindex('(',bizname),charindex(')',bizname))
from 表名
where charindex('(',bizname)>0

charindex('(',bizname)>0 这个条件是bizname 栏位裏面必须有()追问

照你这样就如第一列,我想把那括号给去了,不包括它

追答

select substring(bizname,charindex('(',bizname)+1,charindex(')',bizname)-1)
from 表名
where charindex('(',bizname)>0

追问

上一个追问的图你没注意看。看现在这个图,右括号没去掉, 无形资产(软件)这个数据倒是成了。如果-1改成-2,其他的都成了,但是软件这个的全角右括号就没了。。

追答

哦了 刚才没看清楚
但是:无形资产(软件)这个没有太好的办法解决,因为charindex(')',bizname)是返回第一个')'的位置的值。
下面的能暂时解决你的问题
select case when (charindex('(',bizname)>0 and charindex('))',bizname)=0)
then substring(bizname,charindex('(',bizname)+1,charindex(')',bizname)-2) else substring(bizname,charindex('(',bizname)+1,charindex(')',bizname)-1) end
from 表名
where charindex('(',bizname)>0

本回答被提问者采纳
第2个回答  2012-04-06
declare @a varchar(50)
select @a= ziduan from table12
declare @i int ,@j int
set @i = Charindex('(',@a)
set @j = Charindex(')',@a)
declare @e varchar(20)
set @e=substring(@a,@i+1,@j-2)
print @e
第3个回答  2012-04-06
select substring(charindex('(',BizName)+1,charindex')',BizName)-1)
from 表名 where charindex('(',BizName)>1追问

如图,成这样了。只有无形资产(软件)这个成功。如果把-1变成-2,则其他的都成了,无形资产(软件)这一个数据的全角右括号变没了。。。

SQL server中出现错误:截断字符串或二进制数据?
1. 原因:这个错误通常是因为你尝试将一个较长的字符串或二进制数据插入到一个定义为较短长度的列中。例如,如果你有一个定义为VARCHAR(50)的列,但你尝试插入一个长度为60的字符串,那么你就会得到这个错误。2. 影响:除了插入操作,更新和合并操作也可能导致这个错误。例如,使用UPDATE语句更新表中...

如何通过SQL截取指定字段某一个字符的前面或后面的字符串?
针对SQL Server的实现:当需截取字符串"OPE-CZ-108-003-SE71.2"中的"."字符前面的字符串时,可以采用如下SQL语句。结果为"OPE-CZ-108-003-SE71",取值范围从字段第一位置开始,至"."字符前一个位置结束。对于截取"."字符后面的字符串,同样使用SQL Server,只需调整SQL语句,从"."字符后一位...

sql截取特定字符前的数据
在SQL中,截取特定字符前的数据通常可以通过`LEFT`函数结合`CHARINDEX`(在某些数据库如SQL Server中)或`INSTR`(在MySQL中)等函数来实现。具体方法取决于你所使用的数据库系统。以SQL Server为例,如果你想从一个字符串字段中截取某个特定字符(比如逗号`','`)前的所有数据,你可以使用`LEFT`函数...

SQL server进阶技能篇:字符串内分拆截取
分析问题后,采用最基础方法——substring与charindex函数。charindex函数用于获取字符串中特定字符的位置,substring函数则用于截取字符串。为确保准确拆分,自定义函数需处理多种情况,如字符串中逗号数量不一致,以及避免因参数不合理导致的错误。首先,定义变量@cfq用于存储输入字符串,并计算其中逗号数量。巧妙...

SQL server列 截取字符串
要是BIZNAME有两个括号就不行了 select substring(bizname,charindex('(',bizname),charindex(')',bizname))from 表名 where charindex('(',bizname)>0 charindex('(',bizname)>0 这个条件是bizname 栏位裏面必须有()

sql server截取某个特定字符前的字符串
left(列名,charindex(特定字符,列名)-1)left:返回从左边开始指定字符串 charindex:找到特定并返回字符所在位置 select  left(case_name,charindex('_',case_name)-1) from table1  where charindex('_',case_name)-1 > 0 注意:不加where后面的条件会报 “传递给 LEFT 或 ...

如何截取一段sql中某个字符串之前的内容,在线等
\/*** Sql Server中截取字符串的常用方法 ***\/--1、LEFT()方法---函数说明---1)语法:LEFT(character,integer) --2)介绍:参数1:要截取的字符串,参数2:截取字符个数--3)使用:--返回从字符串左边开始指定个数的字符--select LEFT('SqlServer_2008',3)--4)返回:Sql--1、RIGHT...

SQL Server将截断字符串或二进制数据是怎么回事
在SQL Server中,当尝试插入或更新一个字段时,如果提供的字符串或二进制数据的长度超过了该字段定义的最大长度,数据库系统会抛出“字符串或二进制数据将被截断”的错误。这是因为SQL Server为了保证数据的一致性和完整性,不允许自动裁剪超出字段长度限制的数据,而是阻止操作并给出错误提示。具体来说,...

sql截取字符串,作为表的行和列
sqlserver中一般用substring来截取字符,mysql中用substr和substring较多,access中一般用mid。上述函数基本类似:以substr为例 substr (str,pos)由 中,选出所有从第 位置开始的字元。请注意,这个语法不适用于 sql server 上。substr (str,pos,len)由 中的第 位置开始,选出接下去的 个字元。

sql字符串截取查询,该怎么解决
Server 中截取字符串常用的函数:1.LEFT (character_expression ,integer_expression )函数说明:LEFT ('源字符串','要截取最左边的字符数')返回从字符串左边开始指定个数的字符 select LEFT('SQL_Server_2008',4 );返回结果:SQL_2.RIGHT (character_expression ,integer_expression )函数说明:RIGHT ...

相似回答
大家正在搜