請教大神如何給資料庫里面的欄位隨機生成指定長度的字母組合字串。
欄位最好是唯一的不能重復,可以指定是數字+大寫字母+小寫字母組合,或者24位大小寫字母,再或者全部大寫字母。
我想用這些字串去做內容鏈接URL,希望知道的大神指教。
比如我隨機生成數字
update 表 set 欄位= floor(1 + rand()*108)
uj5u.com熱心網友回復:
newid() 就可以產生隨機字串, 不需要你花心思去另外寫。select newid() AS string,len(newid()) AS stringLen
/*
string stringLen
243AAE6E-A019-49A4-A41C-5EEBDCA7FE1C 36
*/
select left(newid(),10) AS 長度為10的字串
/*
7CBF3CF9-F
*/
uj5u.com熱心網友回復:
不是哦,我是需要在資料庫里面批量給欄位執行該如何寫呢
如圖所示
uj5u.com熱心網友回復:
批量也可以使用newid()
update tableName set column = newId();
uj5u.com熱心網友回復:
IF OBJECT_ID('v_NewID') IS NOT NULL DROP VIEW v_NewID
GO
CREATE VIEW v_NewID AS SELECT NEWID() AS MacoID
GO
-- 產生隨機碼
IF OBJECT_ID('uf_RandCode') IS NOT NULL DROP FUNCTION uf_RandCode
GO
CREATE FUNCTION uf_RandCode( @nDigit Integer, @UpperOrLower TinyInt ) RETURNS nVarChar(max) AS
BEGIN
DECLARE @maco_wang TABLE ( ID nVarChar(1) )
DECLARE @maco_number Integer, @number Integer, @my_one nVarChar(max), @my_two nVarChar(max)
SET @my_one = ''; SET @maco_number = 0; SET @number = 48;
WHILE ( @number >= 48 AND @number <= 57 ) OR ( @number >= 65 AND @number <= 90 ) OR ( @number >= 97 AND @number <= 122 )
BEGIN
INSERT INTO @maco_wang SELECT CHAR( @number )
SET @number = @number + 1
IF ( @number = 58 ) SET @number = 65
IF ( @number = 91 ) SET @number = 97
END
WHILE @maco_number < @nDigit
BEGIN
SELECT @my_two=id FROM @maco_wang ORDER BY ( SELECT MacoID FROM v_NewID )
SET @my_one = @my_two + @my_one
SET @maco_number = @maco_number + 1
END
IF @UpperOrLower = 1 -- 小寫
SET @my_one = LOWER( @my_one )
ELSE IF @UpperOrLower = 2 -- 大寫
SET @my_one = UPPER( @my_one )
RETURN @my_one
END
GO
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11433.html
標籤:疑難問題
上一篇:sql server動態行轉列
下一篇:求大佬
