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 行受影响)
*/
相关文档:
数据库设计经验谈
一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有 ......
有关SQL中逻辑查询处理的各个阶段(自己搞的例子,不对的欢迎指正哦)
SQL不同于其他的编程语言的最大最大特征有3个吧,
一个是它是面向集合的编程思想,第二个是三值逻辑(这个后面会说到),还有一个就是今天主要要说的查询元素的逻辑处理次序。
请看一个基本查询的逻辑过程:
(8) SELECT (9) DISTINCT ( ......
交叉表语句的实现:
用于:交叉表的列数是确定的
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 ......