sql server 字符匹配 有关汉字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 字符匹配 有关汉字相关的知识,希望对你有一定的参考价值。

比如我要查找student表中学生名字中第二个字为明的所有学生信息。假设student、表中只有2个属性name及no。
那么如何写这个查询表达式呢?
是select * from sudent where name='__明%'
还是select * from sudent where name='_明%'呢?

参考技术A 1.SQL 函数:字符匹配 like ,长度函数 len(); 还是长度函数datalength();
2.下面介绍有汉字取法,SQL 如下:
3.declare @sql varchar(1000)
set @sql='abc国m,de中d国e人民f'
select @sql 字符,DATALENGTH(@sql)-len(@sql) 汉字个数
4.下面介绍字符匹配 like 用法:
5.SQL如下:
声明一个表A ,有字段a。数据:12345abcd
select * from A where a like '%12345%'
结果存在记录:
参考技术B select * from sudent where name='_明%'
汉字占两个字符的长度,但是仍然作为一个字符取追问

按照这种说法,比如说一个表Student中有2个学生(属性为Sname)张三,李四。
使用SELECT Sname From Student WHERE Sname LIKE '__'; 可查出张三李四,但为什么
SELECT Sname From Student WHERE Sname LIKE '______';或者加更多的‘_’也能查出结果呢?

追答

这个我也不是很清楚。
字段Sname的长度是多少,你可以测试一下2*长度个‘_’能不能查不出来。

本回答被提问者采纳
参考技术C 解决方法:
控制面板----时钟语言区域-----区域和语言-----短日期改为yyyy-mm-dd
如下图:
tags:
无法为字符
匹配的引号字符
参考技术D 应该是后面这种吧。 第5个回答  2011-10-03 select * from sudent where name='_明%'
试一试不就可以了、

sql server 提取汉字/数字/字母的方法

ql server 提取汉字/数字/字母的方法

 

--提取数字
IF OBJECT_ID(‘DBO.GET_NUMBER2‘) IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
Go
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX(‘%[^0-9]%‘,@S) > 0
BEGIN
set @s=stuff(@s,patindex(‘%[^0-9]%‘,@s),1,‘‘)
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER(‘呵呵ABC123ABC‘)
GO
--123
--------------------------------------------------------------------
--提取英文
IF OBJECT_ID(‘DBO.GET_STR‘) IS NOT NULL
DROP FUNCTION DBO.GET_STR
GO
CREATE FUNCTION DBO.GET_STR(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX(‘%[^a-z]%‘,@S) > 0
BEGIN
set @s=stuff(@s,patindex(‘%[^a-z]%‘,@s),1,‘‘)
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_STR(‘呵呵ABC123ABC‘)
GO
--------------------------------------------------------------------
--提取中文
IF OBJECT_ID(‘DBO.CHINA_STR‘) IS NOT NULL
DROP FUNCTION DBO.CHINA_STR
GO
CREATE FUNCTION DBO.CHINA_STR(@S NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX(‘%[^吖-座]%‘,@S) > 0
SET @S = STUFF(@S,PATINDEX(‘%[^吖-座]%‘,@S),1,N‘‘)
RETURN @S
END
GO
PRINT DBO.CHINA_STR(‘呵呵ABC123ABC‘)
GO

 

SELECT * FROM (select ‘ASDKG論壇K联通DL‘ as col)TB WHERE COL LIKE N‘%[吖-咗]%‘






















































以上是关于sql server 字符匹配 有关汉字的主要内容,如果未能解决你的问题,请参考以下文章

sql server如何精准匹配字符中的字符

SQL Server PATINDEX 以匹配确切的字符串

正则表达式如何匹配汉字?

正则表达式如何只匹配一个中文字符

SQL Server 2008 R2:计数字符匹配

Oracle 判断表字段里字符串是不是含有汉字