-
2021-07-12 18:28:37
从字符串的第6个字符开始,只取2个字符
SELECT SUBSTRING('SUBSTRING', 6, 2)
sql = " SELECT `__source__` from database.`tablename` where SUBSTRING(cast(base64 as CHAR),6,2)='AB' limit 1000,100"
更多相关内容 -
sql带分隔符的截取字符串示例
2020-12-15 16:17:45select @str as ‘字符串’select len(@str) as ‘字符长度’select charindex(‘,’,@str,1) as ‘第一个逗号的索引值’select LEFT(@str,charindex(‘,’,@str,1)-1) as ‘第一个值’select SUBSTRING(@str,... -
SQL截取字符串
2021-11-05 21:58:27SQL使用charindex和substring截取字符串 SUBSTRING 返回字符、binary、text 或 image表达式的一部分。有关可与该函数一起使用的有效Microsoft SQL Server 数据类型的更多信息,请参见数据类型。 语法 SUBSTRING(expGPS平台、网站建设、软件开发、系统运维,找森大网络科技!
https://cnsendnet.taobao.com
来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=2022SQL使用charindex和substring截取字符串
SUBSTRING
返回字符、binary、text 或 image表达式的一部分。有关可与该函数一起使用的有效Microsoft SQL Server 数据类型的更多信息,请参见数据类型。语法
SUBSTRING(expression,starting_position int,length int)参数
expression
是要从哪个字符串中截取就写那个字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。starting_position
是一个整数,指定子串的开始位置。
注意:开始位置是从1开始,如abcdefg中c是第3个。length
是一个整数,指定子串的长度(要返回的字符数或字节数)。substring() ——任意位置取子串
left()
right()
——左右两端取子串ltrim()
rtrim()
——截断空格,没有trim()。charindex()
patindex()
——查子串在母串中的位置,没有返回0。区别:patindex支持通配符,charindex不支持。
函数功效:
字符串截取函数,只限单字节字符使用(对于中文的截取时遇上奇数长度是会出现乱码,需另行处理),本函数可截取字符串指定范围内的字符。应用范围:
标题、内容截取函数格式:
string substr(string string, int start [, int length])
参数1:处理字符串
参数2:截取的起始位置(第一个字符是从0开始)
参数3:截取的字符数量
substr()更多介绍可在PHP官方手册中查询(字符串处理函数库)
1.截取已知长度的函数A.截取从字符串左边开始N个字符
Declare @S1 varchar(100)
Select @S1=‘http://www.163.com’
Select Left(@S1,4)
------------------------------------
显示结果: http
B.截取从字符串右边开始N个字符(例如取字符www.163.com)
Declare @S1 varchar(100)
Select @S1=‘http://www.163.com’
Select right(@S1,11)
------------------------------------
显示结果: www.163.comC.截取字符串中任意位置及长度(例如取字符www)
Declare @S1 varchar(100)
Select @S1=‘http://www.163.com’
Select SUBSTRING(@S1,8,3)
------------------------------------
显示结果: www以上例子皆是已知截取位置及长度,下面介绍未知位置的例子
2.截取未知位置的函数
A.截取指定字符串后的字符串(例如截取http://后面的字符串)
方法一:
Declare @S1 varchar(100)
Select @S1=‘http://www.163.com’
Select Substring(@S1,CHARINDEX(‘www’,@S1)+1,Len(@S1))
/此处也可以这样写:Select Substring(@S1,CHARINDEX(’//’,@S1)+2,Len(@S1))/
------------------------------------
显示结果: www.163.com需要注意:CHARINDEX函数搜索字符串时,不区分大小写,因此CHARINDEX(‘www’,@S1)也可以写成CHARINDEX(‘WWW’,@S1)
方法二:(与方法一类似)
Declare @S1 varchar(100)
Select @S1=‘http://www.163.com’
Select Substring(@S1,PATINDEX(’%www%’,@S1)+1,Len(@S1))
–此处也可以这样写:Select Substring(@S1,PATINDEX(’%//%’,@S1)+2,Len(@S1))
------------------------------------
显示结果: www.163.com
函数PATINDEX与CHARINDEX区别在于:前者可以参数一些参数,增加查询的功能
方法三:
Declare @S1 varchar(100)
Select @S1=‘http://www.163.com’
Select REPLACE(@S1,‘http://’,’’)
------------------------------------
显示结果: www.163.com
利用字符替换函数REPLACE,将除需要显示字符串外的字符替换为空
方法四:
Declare @S1 varchar(100)
Select @S1=‘http://www.163.com’
Select STUFF(@S1,CHARINDEX(‘http://’,@S1),Len(‘http://’),’’)
------------------------------------
显示结果: www.163.com函数STUFF与REPLACE区别在于:前者可以指定替换范围,而后者则是全部范围内替换
B.截取指定字符后的字符串(例如截取C:\Windows\test.txt中文件名)
与A不同的是,当搜索对象不是一个时,利用上面的方法只能搜索到第一个位置
方法一:
Declare @S1 varchar(100)
Select @S1=‘C:\Windows\test.txt’
select right(@S1,charindex(’’,REVERSE(@S1))-1)
-------------------------------------
显示结果: text.txt利用函数REVERSE获取需要截取的字符串长度
substr()
例子:
private void DDL_AreaBind()
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“strcon”].ConnectionString);
string str = “0000”;
cmd = new SqlCommand(“select AreaID,Name=ltrim(Name) from Area where right(AreaID,4) =’” + str + “’”, conn);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds, “area”);
this.ddl_area.DataSource = ds.Tables[“area”].DefaultView;
this.ddl_area.DataTextField = “Name”;
this.ddl_area.DataValueField = “AreaID”;
this.ddl_area.DataBind();cmd = new SqlCommand("select * from Area ", conn); cmd.CommandType = CommandType.Text; SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(ds, "city"); this.ddl_city.DataSource = ds.Tables["city"].DefaultView; this.ddl_city.DataTextField = "Name"; this.ddl_city.DataValueField = "AreaID"; this.ddl_city.DataBind(); }
protected void ddl_area_SelectedIndexChanged(object sender, EventArgs e)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“strcon”].ConnectionString);
this.ddl_city.Enabled = true;
string str1=“0000”;
cmd = new SqlCommand(“select AreaID,Name from Area where substring(AreaID,1,2)=’” + this.ddl_area.SelectedValue.Substring(0,2) + "’ AND substring(AreaID,3,4) <> ‘0000’ AND substring(AreaID,5,2)=‘00’ ", conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds, “city”);
this.ddl_city.DataSource = ds.Tables[“city”].DefaultView;
this.ddl_city.DataTextField = “Name”;
this.ddl_city.DataValueField = “AreaID”;
this.ddl_city.DataBind();
}
PS:
最近项目中用到比较少见的SQL语句,分享一下:
查询祖先节点
select * from 目录表_数据库 where ID<>-1 and datatype<>1 and datatype<>2 connect by prior FATHERID=ID start with ID=28 order by 目录级别,ID
查询子孙节点:
select * from 目录表_数据库 where ID<>-1 and datatype<>1 and datatype<>2 connect by prior ID=FATHERID start with ID=28 order by 目录级别,IDSQL charindex的用法
select * from table_a where charindex(‘a’,id)>0 or charindex(‘b’,id)>0
table_a 表中 id字段中含有"a"或者"b"的记录.
CHARINDEX
返回字符串中指定表达式的起始位置。
语法
CHARINDEX ( expression1 , expression2 [ , start_location ] )
参数
expression1
一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
返回类型
int注释
如果 expression1 或 expression2 之一属于 Unicode 数据类型(nvarchar 或 nchar)而另一个不属于,则将另一个转换为 Unicode 数据类型。
如果 expression1 或 expression2 之一为 NULL 值,则当数据库兼容级别为 70 或更大时,CHARINDEX 返回 NULL 值。当数据库兼容级别为 65 或更小时,CHARINDEX 仅在 expression1 和 expression2 都为 NULL 时返回 NULL 值。
如果在 expression2 内没有找到 expression1,则 CHARINDEX 返回 0。示例
第一个代码示例返回序列"wonderful"在 titles 表的 notes 列中开始的位置。第二个示例使用可选的 start_location 参数从 notes 列的第五个字符开始寻找"wonderful"。第三个示例显示了当 expression2 内找不到 expression1 时的结果集。USE pubs
GO
SELECT CHARINDEX(’wonderful’, notes)
FROM titles
WHERE title_id = ’TC3218’
GO– Use the optional start_location parameter to start searching
– for wonderful starting with the fifth character in the notes
– column.
USE pubs
GO
SELECT CHARINDEX(’wonderful’, notes, 5)
FROM titles
WHERE title_id = ’TC3218’
GO下面是第一个查询和第二个查询的结果集:
46
(1 row(s) affected)
USE pubs
GO
SELECT CHARINDEX(’wondrous’, notes)
FROM titles
WHERE title_id=’TC3218’
GO下面是结果集。
0
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
https://cnsendnet.taobao.com
来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=2022 -
SQL SERVER字符串截取,SQL SERVER根据指定字符截取
2022-01-26 10:49:14SQL SERVER字符串截取,SQL SERVER根据指定字符截取字符串截取
字符串截取函数:substring(str,startlen,endlen)
需要截取的字符:str
开始长度:startlen --从1开始
结束长度:endlen -从1开始
用法:select substring(“abcdefg”,1,2)
输出:bc为啥这么麻烦:因为sql server没有substring_index函数,只能用substring函数
根据指定字符截取
需要用到的函数:
substring–介绍上面已经写了
LTRIM --去除左边空格
RTRIM–去除右边空格
len–获取字符长度,从1开始charindex(target,str)–返回指定字符的下标,从1开始
目标字符:target–可以指定任意东西字符
字符:str–目标字符所在的字符串
用法:charindex(”@“,“1234@abcd”)
输出:4Tips:这里演示的字符中没包含换行符和占位符,请自行测试
实战sql:也可以直接拿来用;
需要改动的地方:表名,目标字符串:b.selectname,目标字符:"/"SELECT LTRIM( RTRIM( b.selectname ) ) AS "字符串", charindex( '/', LTRIM( RTRIM( b.selectname ) ) ) + 1 AS "开始位置", len( b.selectname ) AS "结束位置", SUBSTRING ( LTRIM( RTRIM( b.selectname ) ), charindex( '/', LTRIM( RTRIM( b.selectname ) ) ) + 1, len( b.selectname ) ) AS "结果" FROM workflow_billfield a LEFT JOIN workflow_selectitem b ON a.id= b.fieldid WHERE billid = - 13 AND fieldname = 'fylx1';
sql执行结果:
文章到此结束,如有雷同纯属意外;
欢迎大家踊跃发言,积极补充。 -
SQL根据指定分隔符分解字符串实现步骤
2020-09-11 00:00:04想要在MS SQL中根据给定的分隔符把这个字符串分解成各个元素,本文将详细介绍此功能的实现,需要了解的朋友可以参考下 -
SQL语句:如何截取指定字段某一个字符的前面/后面的字符串?
2022-04-08 10:57:21假设数据库中,某一列数据像这样,每个数据都有同一个字符“-”,这时如果我们需要获取这个字符的前面的字符串或后面的字符串,应该用什么SQL语句呢? SUBSTRING ( expression, start, length ) --SUBSTRING('列名...假设数据库中,某一列数据像这样,每个数据都有同一个字符“-”,这时如果我们需要获取这个字符的前面的字符串或后面的字符串,应该用什么SQL语句呢?
SUBSTRING ( expression, start, length ) --SUBSTRING('列名',起始位数,要取的字符串长度)
1.获取“-”前面的字符串:
SUBSTRING(FBILLNO, 1 , CHARINDEX('-',FBILLNO)-1) from a 列名 ,从第一位取值 ,要取的字符串长度是“-”字符在字段中的位置减1
2.获取“-”后面的字符串:
SUBSTRING(FBILLNO ,CHARINDEX('-',FBILLNO)+1 ,len(FBILLNO)-charindex('-',FBILLNO)) 列名,从“-”字符后一位开始 ,要取的字符串长度是字段总长度减去“-”字符所在位置
-
sql通过空格将字符串拆分为postgresql中的表
2021-07-16 18:44:25------- the quick lazy fox (4 filas) Since 8.2 does not have UNNEST, you can write it in PostgreSQL like this: create or replace function unnest(anyarray) returns setof anyelement language sql as $$ ... -
presto与hive字符串常用操作(字符串截取、字符串拼接、字符串分割)
2021-07-24 14:57:121、字符串截取substrpresto: substr(string, start, length) → varchar 如: select substr('1599319787151',1,10) 功效:返回字符串A从下标start位置开始,长度为len的字符串 substr(string, start) → ... -
截取用,分割的字符串中的第n个字符串 SQL
2010-10-09 11:42:09aaa,bbb,ccc n=2时 截取结果 bbb 很明白了吧 哈 -
PHP按符号截取字符串的指定部分
2021-05-07 07:45:23字符串截取在php开发中是比较常用的;而且对于截取的需求也有很多种;就比如说对url链接的操作:http://baijunyao.com/article/12有时我们想截取最后一个斜杠'/'后面的数字;有时我们又需要截取第一个斜杠'/'前面的... -
sqlserver 截取特殊字符附近的字符串 CHARINDEX,SUBSTRING,LEN,REPLACE
2020-09-11 10:00:351,图示 1.1 目的:截取特殊字符附近的字符串 1.2 语法: select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test; 1.3 应用: SELECT DISTINCT name , CHARINDEX( '(', name )... -
SQLServer数据库中截取字符串的常用方法
2018-11-10 18:22:22/****** Sql Server中截取字符串的常用方法 ******/ TESTCODESTRING='01378a77517a41e982b14cc97b1f8794' --1、LEFT()方法--- --函数说明--- --1)语法:LEFT(character,integer) --2)介绍:参... -
SQLSERVER字符串截取(CHARINDEX,LEFT,REVERSE,STUFF)
2020-09-28 15:05:38已知: 字段string=F:\photo\Winter Leaves.jpg ...--截取字符串第一个\左边的字符串 select left(string,charindex('\',string)-1) from cs --输出结果:F: --+++++++++++++++++++++++++++++++++++++++++. -
sql中截取字符串函数_SQL Server 2017中的顶级SQL字符串函数
2020-07-24 09:10:46sql中截取字符串函数 SQL Server 2017 has been in the talk for its many features that simplify a developer’s life. With the previous versions, developers had to write T-SQL, or user-defined functions... -
sql 截取字符串第一次出现字符之前的数据
2019-10-06 21:57:58sql 截取字符串第一次出现字符之前的数据 截取sql 第一次出现字符之前的数据 (select left( a.ChangeProductName,charindex(',', ChangeProductName)-1)) as ChangeProductNam... -
sql语句可以截取指定字段后面的字符串
2019-04-23 09:47:00select id,substring(Memo,charindex('数量',Memo)+3,len(Memo)-charindex('数量',Memo)) from trace where Memo like '%退货%' 转载于:https://www.cnblogs.com/smartsensor/p/10754589.html -
SQL 截取字段空格之前的数据
2017-06-30 22:55:00MYSQL SELECT left(city,LOCATE(' ',city)),count(*) FROM `lj_customer` WHERE 1=1 group by left(city,LOCATE(' ',city)) ...SQL select a,left(a,charindex( ' ',a)) FROM test SELECTleft(city,LO... -
SQL分割字符串取对应段空格前一部分
2012-07-31 15:00:40CREATE function Get_...@str varchar(1024), --要分割的字符串 @split varchar(10), --分隔符号 @index int --取第几个元素 ) returns varchar(1024) as begin declare @numlocation int decl -
sql截取字符串拼接字符串修改字符串
2016-10-24 10:02:01截取字符串 substr( string, start_position, [ length ] ) string 为要截取的字符串 start_position为开始截取的位数(位数从1开始,如果是负数,表示从右边开始截取) length表示截取的长度(如果不写表示去后面... -
Oracle 截取字符串
2021-12-30 15:28:10substr 函数:截取字符串 语法:SUBSTR(string,start, [length]) string:表示源字符串,即要截取的字符串。 start:开始位置,从1开始查找。如果start是负数,则从string字符串末尾开始算起。 length:可选项,... -
sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗?
2019-12-25 14:20:01sql语句,能够截取指定字符串后面的一个字符串吗? 如下图: dasf.sdf dergre.adsf.lfs ljjdf.ljfjl 想要得到第一个.后面的字符串内容 sdf adsf.lfs ljfjl SQL语句写法如下,str为字段名称: ... -
SQL Server 字符串根据指定字符拆分 自定义拆分字符串函数
2021-07-16 17:16:50但是对于 特殊字符串的处理,比如:字符串: '96525,11425,6632,11785,99654',如果想获取第三个与第四个分割符号之间的数字, 那么SQL 内置函数无法直接做到。这时就需要自定义函数。下面自定义三个函数,用于处理... -
oracle截取字段中的部分字符串
2021-01-17 18:27:22使用Oracle中Instr()和substr()函数:在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。其语法为:instr(sourceString,destString,start,appearPosition). instr('源字符串' , '目标... -
java 正则匹配空格字符串 正则表达式截取字符串
2021-02-12 09:46:42java 正则匹配空格字符串 正则表达式截取字符串需求:从一堆sql中取出某些特定字符串:比如配置的sql语句为:"company_code = @cc and project_id = @pid ; update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update t2 ... -
sql 如何截取一个字段里某一字符串中间的字符?
2021-01-19 02:43:32展开全部--这个查询需要注意的是qwer后的需要查询的字符串必须是一个空e5a48de588b662616964757a686964616f31333365653331格,不能有的是一个空格有的是两个。也就是格式要固定。--定义参数create table #a (string ... -
Oracle中的varchar2类型及其字符串截取
2021-05-08 16:53:14', -4, 3) expr_val FROM dual union all SELECT '从截取开始位置超过字符串长度' func, 'SUBSTR(''Hello SQL!'', 20, 3)' expr, SUBSTR('Hello SQL!', 20, 3) expr_val FROM dual 结果如下: substr例子 注:上图中... -
SQLServer_字符串截取相关函数_replace_substring_charindex
2018-11-16 17:39:49参数1:要截取的字符串,参数2:截取字符个数 LEFT ( character_expression , integer_expression ) 从右截取 RIGHT 参数1:要截取的字符串,参数2:截取字符个数 RIGHT ( character_expression , integer_... -
SQL语句根据分割符分割字符串
2021-12-04 17:10:55利用PARSENAME函数分割字符串 DECLARE @str nvarchar(50)=N'NBA||湖人||老詹||MVP'; SELECT PARSENAME(REPLACE(@str,'||','.'),4), PARSENAME(REPLACE(@str,'||','.'),3), PARSENAME(REPLACE(@str,'||','.'... -
SQLServer字符串函数
2021-07-27 16:06:19参数character_expression:由字符数据组成的字母数字...1.SubString():截取指定的字符串 --substring(character_expression,integer_experssion,integer_expression) --character_expression: 表达式(varchar、nva -
Android中如何截取字符串中某个字符之前或之后的字符串
2021-05-26 06:12:21提示:早前,blur 事件仅 ... 两种方法 更改 EBS R12界面LOGO以及内容 from:metalink more: Note 174219.1 - How To Change The Logo In The Oracle Application Menu Note 84975 ... Epic Games工程师分享:如何在...