gpt4 book ai didi

mysql - MSSQL 相当于 MYSQL ELT() 函数

转载 作者:行者123 更新时间:2023-11-29 05:21:01 24 4
gpt4 key购买 nike

我在 mysql 中定义了以下函数,并试图将其转换为 MSSQL。 MSSQL (2012) 的等价物是什么?

DELIMETER $$

CREATE FUNCTION get_random_state() RETURNS VARCHAR(500) DETERMINISTIC

BEGIN
set @state := ELT(1 + FLOOR(RAND() * 6),'AZ','RI','VA','PA','LA','CA');
RETURN @state;
END $$

DELIMETER ;

最佳答案

它有一个小故障....在 SQL Server 中你不能使用 RAND(), NEWID() 它会抛出一个错误提示有某种滑动效果函数 bla bla..

但有一种解决方法,您可以创建一个调用该 RAND() 函数的 View ,然后在您的函数定义中使用该 View 。

查看

CREATE VIEW vw_Rand_Value
AS
SELECT RAND() Rnd_Value
GO

SQL Server 2008 函数

CREATE FUNCTION get_random_state() 
RETURNS VARCHAR(2)
BEGIN

DECLARE @Table TABLE(States VARCHAR(2), OrderID FLOAT)
INSERT INTO @Table (States,OrderID)
VALUES ('AZ', (SELECT * FROM vw_Rand_Value))
,('RI', (SELECT * FROM vw_Rand_Value))
,('VA', (SELECT * FROM vw_Rand_Value))
,('PA', (SELECT * FROM vw_Rand_Value))
,('LA', (SELECT * FROM vw_Rand_Value))
,('CA', (SELECT * FROM vw_Rand_Value))

DECLARE @Random_State VARCHAR(2);

SELECT TOP 1 @Random_State = States
FROM @Table
ORDER BY OrderID;

RETURN @Random_State;
END

SQL Server 2012 函数

CREATE FUNCTION get_random_state() 
RETURNS VARCHAR(2)
BEGIN
DECLARE @rand int;
DECLARE @Random_State VARCHAR(2);

SELECT @rand = 1 + FLOOR(Rnd_Value * 6) FROM vw_Rand_Value

SET @Random_State = CHOOSE(@rand,'AZ','RI','VA','PA','LA','CA');

RETURN @Random_State;
END

调用函数

SELECT  dbo.get_random_state()

关于mysql - MSSQL 相当于 MYSQL ELT() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25774700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com