2015-06-26 13 views
0

我需要使用SQL创建一个varchar(5)值。该字符串只能包含字母和数字,不能包含特殊字符。我已经尝试过(见下文),但这并没有奏效。SQL-创建一个长度为5的随机varchar

CHAR(ROUND(RAND() * 93 + 30, 0)); 

任何想法的事情将不胜感激。完整的代码如下所示。

merge into fundtype as fund using (select fundtypnum, fundtype, country from table(values 
('JRLH5','$FOCA$01$$','USA'), 
('YLHOV','$FOCA$02$$','AUS'), 
('0MGJA','$FOCA$02$$','USA'), 
('UK235','$FOCA$03$$','CAN'), 
('HJP3C','$FOCA$03$$','USA') 
)) 
as newfund (fundtypnum,fund_type,country) 
on (
(fund.fund_type = newfund.fund_type and fund.country = newfund.country) or 
(fund.fundtypnum = newfund.fundtypnum) 
) 
when not matched then 
insert (fundtypnum,fund_type,country) values (
    CHAR(ROUND(RAND() * 93 + 30, 0)), 
    newfund.fund_type, 
newfund.country); 
+1

我建议这些步骤。 1 - 创建一个> 1,000,000的随机数。 2.将其转换为十六进制。 3 - 取5个最右边的字符。 –

+0

定义“没有工作”。 – mustaccio

+0

你为什么觉得你需要这个?你打算如何处理这个价值? –

回答

1

更改CHAR(ROUND(RAND()* 93 + 30,0))

CONCAT(substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',CEIL(RAND()*36),1), 
    substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',CEIL(RAND()*36),1), 
    substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',CEIL(RAND()*36),1), 
    substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',CEIL(RAND()*36),1), 
    substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',CEIL(RAND()*36),1)) 
0

扩大丹Bracuk的评论...尝试这样的事:

SELECT substring(reverse(sys.fn_varbintohexstr(CONVERT(varBINARY(8), 
ABS(Checksum(NewID()) % 1000000)))),1,5)