您的位置:首页 > 数据库

SQL 截取字符串,中文算两个字符的方法

2009-11-17 16:05 447 查看
--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 行受影响)

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: