首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等效于MYSQL ()函数的MSSQL

问等效于MYSQL ()函数的MSSQL
EN

Stack Overflow用户
提问于 2014-09-10 20:41:25
回答 1查看 1.1K关注 0票数 1

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

代码语言:javascript
复制
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 ;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-10 21:08:21

它有个小故障..。在Server中,不能使用RAND(),NEWID()将引发一个错误,抱怨有某种幻灯片影响函数bla。

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

视图

代码语言:javascript
复制
CREATE VIEW vw_Rand_Value
AS
  SELECT RAND() Rnd_Value
GO

Server 2008的函数

代码语言:javascript
复制
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的函数

代码语言:javascript
复制
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

呼叫功能

代码语言:javascript
复制
SELECT  dbo.get_random_state()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25774700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档