❶ 请问sql 2008如何截取字符串中间段内容
--方法一replace函数去掉引号就是没有引号字符串:
selectreplace(zh,'''','')from表
--如果真要截取的话也是可以的. 先left去掉最后一个引号,然后stuff去掉第一个引号即可
selectstuff(left(zh,len(zh)-1),1,1,'')from表
如有问题可以追问,我当及时回答。
希望能帮到你!
❷ sql如何截取字符
sql截取字符串:
1、LOCATE(substr, str):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0;
2、POSITION(substr IN str):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,与LOCATE函数作用相同;
3、LEFT(str, length):从左边开始截取str,length是截取的长度;
4、RIGHT(str,length):从右边开始截取str,length是截取的长度;
5、SUBSTRING_INDEX(str ,substr ,n):返回字符substr在str中第n次出现位置之前的字符串;
6、SUBSTRING(str,n ,m):返回字符串str从第n个字符截取到第m个字符;
7、REPLACE(str, n, m):将字符串str中的n字符替换成m字符;
8、LENGTH(str):计算字符串str的长度。
❸ sql中截取字符串中间数据
你的意思是
XXXXX产品尺寸xxxx产品材质xxxx
是这个意思么?
那么如果有这几个字,那就比较好办了,用oracle可以用instr,如果是其他数据库我就不知道了,不过也肯定有类似的函数,定位后就可以通过定位的结果就是数字然后就可以进行截取了。
如果没有这几个字
比如:
32232323XXXLsadasdasdDL121212,其中大写的XXXL和DL表示尺寸和材质(这里为了看的稍微方便一点,所以用大小写分开),那么就真的没办法了。
整体就是找相同的特点,然后截取。
❹ 如何用SQL 语句截取两个固定字符之间的字符串
一、用到的函数:substring('
',
,
)、charindex('
','
')
select
SUBSTRING('[email protected]',1,charindex('@','[email protected]')-1)
1.substring(字符串表达式,开始位置,长度):
从一个指定字符串的指定位置截取制定长度的字符;
第一个参数表示被截取的字符串;
第二个参数表示要在第一个参数中开始截取的位置;
第三个参数表示要截取的长度。
例如:select
substring('abc123',1,2)
→返回ab
从字符串‘abc123’的第一个字符开始截取,共截取两个字符,最后得到‘ab’。
2.charindex(字符串表达式1,字符串表达式2[,整数表达式]):
在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。
可以指定在字符串2中查找的起始位置。
例如:select
charindex('ab','BCabTabD')
→
返回3
select
charindex('ab','BCabTabD',4)
→返回6
二、用到的函数:left('
',
)、charindex('
','
')
select
LEFT('[email protected]',charindex('@','[email protected]')-1)
1.left(字符串表达式,整数表达式):
从字符串表达式的最左边开始截取整数表达式个字符。
例如:select
left('abcdef',3)
→返回abc
❺ sql中截取字符串中间数据
select
substring(字段名,charindex('-',字段名,0)+1,len(字段名)-charindex('-',reverse(字段名),0)-charindex('-',字段名,0))
from
表名
substring是截取函数
charindex是算特定符号位置的函数
reverse是把字符串排反序的函数
了解一下这三个函数吧,这句你就应该懂了,我这句刚才试验了一下,没问题,环境sqlserver2000
请采纳。
❻ sql中substring截取字符串中间的值
substring只是截取,不能判断是否包含字符,所以需要配合CHARINDEX查找第2个 . 号。
selectsubstring('华南地区.湖南省.张家界市.李毅',CHARINDEX('.','华南地区.湖南省.张家界市.李毅',CHARINDEX('.','华南地区.湖南省.张家界市.李毅')+1)+1,20);
❼ SQL中如何截取标识符前、标识符中间、标识符后的字段
几个概念:
A、标识符:是数据库对象的名称。
数据库对象的名称被看成是该对象的标识符。Microsoft® SQL Server™ 中的每一内容都可带有标识符。服务器、数据库和数据库对象(例如表、视图、列、索引、触发器、过程、约束、规则等)都有标识符。大多数对象要求带有标识符,但对有些对象(如约束)标识符是可选项。
B、保留关键字:是sql语言的语法。属于代码的范畴。
保留关键字是用来定义、操作和访问数据库。保留关键字是 SQL Server 使用的 Transact-SQL 语言语法的一部分,用于分析和理解 Transact-SQL 语句和批处理。尽管在 Transact-SQL 脚本中,使用 SQL Server 保留关键字作为标识符和对象名在语法上是可行的,但规定只能使用分隔标识符。
C、字符串:数据类型的一种,数据类型有整数型、字符串型等。属于数据的范畴。
每个列、局部变量、表达式和参数都有一个相关的数据类型。即属于某种数据类型。
D、通配符、转义符:这2个是跟字符串相关的概念。一般出现在字符串中。
比如 like ’dsd%‘ , dsd% 是字符串。%是通配符。这个语句的含义大家应该都知道,^_^。
使用转义符,可以把通配符改变成普通字符。2种方法:
1、[]是默认的转义符,里面的通配符(里面只能是通配符),都当做普通字符处理:
like ’dsd[%]‘,这时,%就是个普通字符了,查找条件就是要某个字段值完全等于 dsd% 。
2、用ESCAPE关键字定义转义符,
like ’dsd/%‘ ESCAPE ’/' 效果同 like ’dsd[%]‘
还有一种转义符情况:
大家知道,单引号一般可用来包含字符串,如果字符串中有单引号是普通字符,那么就同时有了2种意思的单引号,怎么区分呢?就要用2个单引号来转义为普通字符,如 like ‘ds''d’ ,其实就是指字符串:ds'd
后面提到的QUOTENAME函数,默认是用[]来做分隔符,如果字符串中有[],函数转换后,字符串中的[]就要用两个]]来转义,表明这个[]是个普通字符,与字符串前后的分隔符 [] 相区别。
步入正题,
标识符,分为:
一、常规标识符:符合常规标识符规则的标识符。
常规标识符规则如下:(参考sqlserver的联机帮助)
1、。。。。。
2、。。。。。
3、。。。。。
4、。。。。。
二、分隔标识符:包含在双引号 " 或者方括号 [ ] 内的标识符就是分隔标识符。
注意:双引号 " 或者方括号 [ ] 是分隔符。
在 Transact-SQL 语句中,对不符合常规标识符规则的标识符必须用双引号或方括号来分隔。符合标识符格式规则的标识符可以分隔,也可以不分隔。
1、当QUOTED_IDENTIFIER 为 ON 时,默认是on的。 SQL Server 遵循 SQL-92 规则:
双引号只能用于分隔标识符,不能用于分隔字符串。
为保持与现有应用程序的兼容性,SQL Server 并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。
单引号必须用来包含字符串,不能用于分隔标识符。
如果字符串包含单引号,则需要在单引号前再增加一个单引号:
SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'
注意:"Last Name",你可以写成'Last Name'而不会报语法错误,是因为,sql认为是进行字符串的比较了,比如写成'Last Name'='Last Name',比较结果为真,表中的全部记录就被select出来了。而如果写成:WHERE "Last Name" = "O''Brien",即等号右边改成双引号,则会把O''Brien当成一个标识符(数据库对象),即当成一个字段名,运行时,会提示没有O''Brien列。 2、当 QUOTED_IDENTIFIER 为 OFF 时,对于双引号和单引号的使用,SQL Server 遵循如下规则:
引号不能用于分隔标识符,而是用括号作为分隔符。
单引号或双引号可用于包含字符串。
如果使用双引号,嵌入的单引号不需要用两个单引号来表示:
SELECT * FROM [My Table]
WHERE [Last Name] = "O'Brien"
常规标识符和分隔标识符包含的字符数必须在 1 到 128 之间
另外:
将标识符用作参数:(具体请参考联机帮助)
许多系统存储过程、函数和 DBCC 语句都把对象名当作参数。其中一些参数接受多部分对象名,另一些则只接受单部分名称。接受单部分对象名称还是多部分对象名称决定了 SQL Server 在内部如何分析和使用参数。 。。。。。。。
另外:
QUOTENAME函数:
msdn解释:返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft® SQL Server™ 分隔标识符。
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符:
SELECT QUOTENAME('abc[]def')
下面是结果集:
[abc[]]def]
(1 row(s) affected)
注意,字符串"abc[]def"中的右括号有两个,用于表示转义符,转换成普通字符,与分隔符 [] 相区别。
解释:字符串 abc[]def 中的[]是当做普通字符,所以用 ] ] 来表示 ] 是个普通字符,即表明中间的 [] 就是个普通字符。
如果是:SELECT QUOTENAME('abc[]def' , '()' ) ,不用[]来做分隔符,那么结果是:
(abc[]def) ,就不用两个]] 来转义了,因为新的字符串中只有一种意思的[],即普通字符。
这是个通用的规则,比如字符串中含有单引号 ' 为普通字符串时,比如 :ds'd ,
like 语句就要改成:like ‘ds‘’d’,而不是: like 'ds'd' 。即2个单引号表示转义符,转换成普通单引号字符 ' 。
❽ 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 怎么截取一个字符串中的一部分,例如“||||您好!hello!||||||||”中截取中间的“您好!hello!”
selectreplace(colA,'|','')frombiao