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 行受影响)
*/
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
数据库设计经验谈
一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有 ......
SQLServer2005里使用with encryption选项创建的存储过程仍然和sqlserver2000里一样,都是使用XOR进行了的加密。和2000不一样的是,在2005的系统 表syscomments里已经查不到加密过的密文了。要查密文必须使用DAC(专用管理员连接)连接到数据库后,在系统表 sys.sysobjvalues查询,该表的列imageval存储了相应的密文。具 ......
SQL插入语句得到自动生成的递增 ID 值
insert into Table1(Name,des,num) values ('ltp','thisisbest',10);
select @@identity as 'Id'
随机提取条记录的例子
SQL Server:Select Top 10 * from Tablename Order ......