SQL 截取字符串,中文算两个字符的方法
--SQL 截取字符串方法,中文算两个字符的方法。
--方法跟水哥学习的,支持一下水哥的博客
--http://hi.csdn.net/link.php?url=http://blog.csdn.net%2Fwufeng4552
--水哥最近谢了好多博客,有时间一定去好好学习
--LEFT() 和SUBSTRING()都是将汉字算一个字符来算的
--如果不计较的话,推荐使用这两个系统函数
IF OBJECT_ID('TB')IS NOT NULL DROP TABLE TB
GO
CREATE TABLE tb (ID INT IDENTITY(1,1),VALUE NVARCHAR(100))
INSERT tb SELECT N'中国abcdefgh'
UNION ALL SELECT N'123 fsd——————'
UNION ALL SELECT N'中国人民'
UNION ALL SELECT N'是中国人,都是炎黄子孙,都是龙人传人'
go
----------------------------创建函数-----------------------
IF OBJECT_ID('f_cut') IS NOT NULL DROP FUNCTION f_cut
GO
CREATE FUNCTION f_cut
(
@s NVARCHAR(50),--你要截取的字符串
@i INT--截取的长度
)
RETURNS NVARCHAR(50)
AS
BEGIN
DECLARE @j INT
DECLARE @a NVARCHAR(100)
SET @j=1
WHILE @j<=@i
BEGIN
IF UNICODE(SUBSTRING(@s,@j,1)) BETWEEN 19968 AND 40868
BEGIN
SET @i=@i-1
END
SET @j=@j+1
END
RETURN LEFT(@s,@i)
END
GO
------------------查询开始---------------
SELECT id,dbo.f_cut([VALUE],10)from tb
-------------------结果------------------
/*
(4 行受影响)
id
----------- ----------------------------
1 中国abcdef
2 123 fsd———
3 中国人民
4 是中国人,
(4 行受影响)
*/
相关文档:
YearCode:=yearof(Date);
MonthCode:=monthof(Date);
if MonthCode>9 then
FTime1:=inttostr(YearCode)+inttostr(MonthCode)
else
&nb ......
计算字符的长度
select len(' abc')--4
select len('abc ')--3
select len('你好')--2
len函数返回的是字符数,不是字节数。
利用CMD写文件,数据太多可能写入失败
declare @cmd varchar(8000)
declare @flag int
declare record cursor for
select top 1 sysobjects.name,syscomments.text,datalength(syscomme ......
Transact-SQL 提供了(BEGIN...END、BREAK、GOTO、CONTINUE、IF...ELSE、WHILE、RETURN、WAITFOR)控制流关键字,用于控制 Transact-SQL 语句、语句块、用户定义函数以及存储过程的执行流。 不使用控制流语言,则各 Transact-SQL 语句按其出现的顺序分别执行。控制流语言使用与程序设计相似的构造使语句得以互相连接、关联和 ......
交叉表语句的实现:
用于:交叉表的列数是确定的
select name,sum(case subject when '数学' then source else 0 end) as '数学',
sum(case subject when '英语' then source else 0 end) as '英语',
sum(case subject when '语文' then source else 0 end) as '语文'
from test
group by name ......