SUBSTRING
返回字符、
binary
、
text
或
image
表达式的一部分。有关可与该函数一起使用的有效
Microsoft® SQL Server™
数据类型的更多信息,请参见数据类型。
语法
SUBSTRING ( expression , start , length )
参数
expression
是字符串、二进制字符串、
text
、
image
、列或包含列的表达式。不要使用包含聚合函数的表达式。
start
是一个整数,指定子串的开始位置。
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
官方手册中查询(字符串处理函数库)
举例:
substr("ABCDEFG", 0); //
返回:
ABCDEFG
,截取所有字符
substr("ABCDEFG", 2); //
返回:
CDEFG
,截取从
C
开始之后所有字符
substr("ABCDEFG", 0, 3); //
返回:
ABC
,截取从
A
开始
3
个字符
substr("ABCDEFG", 0, 100); //
返回:
ABCDEFG
,
100
虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", 0, -3); //
返回:
EFG
,注意参数
-3
,为负值时表示从尾部开始算起,字符串排列位置不变
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.com
C.
截取字符串中任意位置及长度
(
例如取字符
www)
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select SUBSTRING(@S1,8,3)
------------------------------------
显示结果
:
www.163.com
以上例子皆是已知截取位置及长度
,
下面介绍未知位置的例子
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();
}
最近项目中用到比较少见的
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
目录级别
,ID
jquery批量接受 jquery获取多个子元素
本文实例讲述了Jquery实现获取子元素的方法。分享给大家供大家参考,具体如下:Jquery获取子元素的方法有2种,分别是children()方法和find()方法。下面我们分别来使用这两种方法,看看它们有何差异。1.children()方法:获取该元素下的直接子集元素2.find()方法:获取该元素下的所有子集元素分别以以下HTML代码为例:• list1
• list1-1
• list1-2
javascript api 接口 js的接口
接口:提供一种说明一个对象应该有哪些方法的手段 JavaScript中有三种方式实现接口:(1)注释描述接口(2)属性检测接口(3)鸭式辨型接口 1、注释描述接口:不推荐优点:易于实现,不需要额外的类或函数。缺点:纯文档约束,程序不能检查实现接口的对象是否实现了所有接口方法1 /**
2 * interface Composite{
3 * functi
document.getElementById(“id”);通过这种方法可以获得这个id名的标签对象
document.getElementsByTagName(“标签名”)通过这种方法可以获得标签名的标签对象。注意:这个时候获得的是数组形式的
document.body:获得body这个对象
创建标签对象:
jquery选中所有非input jquery选择器find
定义和用法find() 方法获得当前元素集合中每个元素的后代,通过选择器、jQuery 对象或元素来筛选。<!DOCTYPE html>
<script type="text/javascript" src="/jquery/jquery.js"></script>
</head>