美文网首页
Transact-SQL复制字符串(SQL Server ):补

Transact-SQL复制字符串(SQL Server ):补

作者: faith3729 | 来源:发表于2016-12-01 21:14 被阅读310次

REPLICATE 微软TechNET解释(https://technet.microsoft.com/zh-cn/library/ms174383(v=sql.110).aspx)

REPLICATE 语法

REPLICATE ( string_expression ,integer_expression ) 

integer_expression

任何整数类型的表达式,包括 bigint。 如果 integer_expression 为负,则返回 NULL。

字符串函数参阅

https://technet.microsoft.com/zh-cn/library/ms181984(v=sql.110).aspx

利用存储过程生成10行数据,编号为:code + 10位数字

CREATE PROCEDURE [dbo].[CodeTestData_pro]
AS
BEGIN
    DECLARE @i INT;
    SET @i = 1;
    WHILE (
              @i <= 10
          )
    BEGIN
        INSERT INTO dbo.CodeTestData
        (   
            [Code],
            [Mobile]          
        )
        VALUES
        (   
            'Code' + REPLICATE('0', 10 - LEN(CAST(@i AS VARCHAR(50))))
            + CAST(@i AS VARCHAR(50)),
            '138' + REPLICATE('0', 8 - LEN(CAST(@i AS VARCHAR(50))))
            + CAST(@i AS VARCHAR(50))       
        );
        SET @i = @i + 1;
        IF @i > 10
            BREAK;
        ELSE
            CONTINUE;
    END;
END;

运行结果

运行结果.png

生成随机字母

select char(rand()26+65)
select char(rand()
26+97)

以下内容来源于互联网

IF ( @Code IS NULL )--第一次申请出境,Code根据ID生成
BEGIN
SET @ID = SCOPE_IDENTITY();
SET @Code = ( REPLICATE('0', ( 12 ) - LEN(@ID))
+ CONVERT([VARCHAR], @ID) );
END;

sql语句返回主键SCOPE_IDENTITY()
**获取SQL-SERVER数据库insert into操作的主键返回值,SCOPE_IDENTITY **
插入一条记录后想要立刻获取其数据表中的主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询,获取出来。或者在插入数据之前取 出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。 个人感觉最快的方式就是,在插入数据后直接获取主键的值,然后返回过来。 方法如下: sql语句如下: INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName; 在sql语句中加入SELECT @@IDENTITY AS returnName;用来获取主键的值

在程序中 获取返回值

      public int sqlexecutereader(string sql) { 
DBopen(); SqlCommand myComm = new      SqlCommand(sql, Connection);
int newID = Convert.ToInt32(myComm.ExecuteScalar()); 
 DBclose();
return newID; 
} 

当然在此处主键是int类型的自动增加的

select SCOPE_IDENTITY() 返回上面操作的数据表最后row的IDENTITY 列的值;
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。 SELECT @@IDENTITY 返回上面操作最后一个数据表的最后row的IDENTITY 列的值; 创建表: create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null) 插入数据: insert into T_User(F_Name) values('我是谁') Select SCOPE_IDENTITY() 存储过程: CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS begin tran Insertinto_T_User Insert into dbo.T_User(F_Name) values(@F_Name) Select SCOPE_IDENTITY()

REPLICATE
REPLICATE (Transact-SQL) 将字串值重复指定的次数
使用方法
REPLICATE ( string_expression ,integer_expression )
REPLICATE(字符串,重复的次数)
说明:
返回字符的长度仅受内存的限制,只要内存足够,可以任意长的字符串。
示例:
REPLICATE('重复',3)
输出结果为:
重复重复重复
【值得注意的是当 integer_expression 值为负值,则返回NULL 】
----来源百度百科(http://baike.baidu.com/link?url=S2InFkqOXXldya3IUkYThRyvRXKcCvG-VIuXXHcsueXuXTfNgJK7NJjvf1GyNvCK6MSay_Iow9PqDy9rrNggd91ZhGax1f7xVDqqHYClhtW)----

相关文章

网友评论

      本文标题:Transact-SQL复制字符串(SQL Server ):补

      本文链接:https://www.haomeiwen.com/subject/xahfmttx.html