Ⅰ sql Sever字符串查找中,如何区分大小写
SQL区分大小写是在你安装数据的时候进行选择的,区分大小写 排序规则这些选项。
Ⅱ sql语句怎么判断一个字符是全角还是半角
selectunicode('s')
/*返回值为65281~65374,则是全角,33~126为半角*/
/*下面为全角与半角的转换函数*/
ifobject_id(N'u_convert',N'FN')isnotnull
dropfunctionu_convert
GO
/*
转换原理
全角字符unicode编码从65281~65374
半角字符unicode编码从33~126
空格比较特殊,全角为12288,半角为32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则COLLATELatin1_General_BIN
是保证字符顺序按unicode编码排序
*/
createfunctionu_convert(
@strnvarchar(4000),--要转换的字符串
@flagbit--转换标志,0转换成半角,1转换成全角
)
returnsnvarchar(4000)
AS
begin
declare
@patnvarchar(8),
@stepint,
@iint,
@spcint
if@flag=0
begin
select@pat=N'%[!-~]%',@step=-65248,
@str=replace(@str,N'',N'')
end
else
begin
select@pat=N'%[!-~]%',@step=65248,
@str=replace(@str,N'',N'')
end
set@i=patindex(@patcollateLATIN1_GENERAL_BIN,@str)
while@i>0
select@str=replace(@str,
substring(
@str,@i,1),
nchar(unicode(substring(@str,@i,1))+@step)),
@i=patindex(@patcollateLATIN1_GENERAL_BIN,@str)
return(@str)
end
GO
测试语句:
selectdbo.u_convert('11',1)as[a],'11'as[b],dbo.u_convert('111',0)as[c]
Ⅲ sql 如何区分字符常量和日期常量
1.用单引号括起来的都是字符型.
2.日期型可以理解为特殊的字符型,特殊的地方就是它可以被数据库引擎隐式的转换成可识别的日期型.也就是说,只有符合一定格式的字符串才可以被转换为日期型.至于到底哪些格式可被数据库引擎转换成日期型,在联机帮助里有详细的说明.
Ⅳ sql server 2008 字符串如何比较
法Ⅰ:转换成二进制再比较,由于大小写的ASC码不同。例如:
[sql]
select * www.2cto.com
from T_User
where cast(field as varbinary) = cast( 'Admin' as varbinary)
法Ⅱ:利用排序规则,也是基于二进制。在字段后加上collate Chinese_PRC_CS_AS_WS
如:
[html]
select *
from T_User
where userName='admin' AND PASSWORD collate Chinese_PRC_CS_AS_WS ='Admin'
是否区分大小写与排序规则有关,排序规则中各部分含义如下所示:
举例分析 Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀 含义:
_BIN 二进制排序 www.2cto.com
_CI(CS) 是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分
_KI(KS) 是否区分假名类型,KI不区分,KS区分
_WI(WS) 是否区分宽度 WI不区分,WS区分
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字 母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项
Ⅳ sql server 查询如何区分大小写
默认情况下,SQL Server不区分大小写,如果数据表TEST的TNAME列中有数据“abcd”和“Abcd”, 如果使用查询语句:select * from test where tname like 'a%',则查询的结果会把上面的两条记录都查询出来,这一点上和Oracle有区别.
可以通过设置排序规使其区分大小写,可以分别在创建数据库、修改数据库、创建表的字符型列(char\varchar\nchar\nvarchar等)时指定排序规则来实现。如:
1、创建数据库使之区分大小写
create database test COLLATE Chinese_PRC_CS_AS
2、修改数据库使之区分大小写
alter database test COLLATE Chinese_PRC_CS_AS
3、创建表使之区分大小写
create table test(tid int primary key,tname varchar(20) collate chines_prc_cs_as)
Ⅵ sql中如何判断字符串中含有特殊字符
1、打开终端窗口,输入mysql -u-root -p,进入mysql。
Ⅶ 如何用SQL语句判断字符串
select *
from table1
where char1 like '%mystring%'
‘%’表示长度大于等于0的任意字符串,而‘?’可以表示一个字符。
Ⅷ 怎么用SQL判断字段值是否为字符或者数字
在不改变你SQL的基础上再加一个 LEFT(col1,1)<>'-'
select * from tb
where
ISNUMERIC(col1)>0 and LEFT(col1,1)<>'-'
---
ISNUMERIC(col1)>0这个本身就将资料过滤为只有数字(正数或负数,没有你说的其他符号了),在其基础上再将负数的情况过滤掉就OK了
Ⅸ 在SQLserver中,怎么区别char跟varchar我是个小白。
char和varchar是一样的字符型,
不同在于,varchar比char更灵活,精确,且不占内存空间,
当你取同样的字符时,char会在该字符后面加上空格,
而varchar则只取得这个字符,比如有字段5,用varchar从该字段
中取aa时,你取得的是"aa",如果用char,则取得的是"aa",
char会在后面用空格补齐5个字段。
所以,varchar比char更精确,但,varchar的速度却比char慢。
因为char是直接取得全部,而varchar是精确的去取得你要的字符。
Ⅹ sql server:如何区分中文和英文字符,如附图
SELECT*FROM[表名]WHERELEN(字段名)<>DATALENGTH(字段名)