当前位置: 首页 > 面试题库 >

使用RAND()在SQL Server中创建非确定性函数

锺离赤岩
2023-03-14
问题内容

经过一番搜索和阅读文档后,很明显,您可以在SQL Server中编写用户定义的函数,这些函数被标记为确定性或非确定性的函数,具体取决于主体中使用的内置函数。

RAND()列在非确定性函数下(请参阅msdn article)。那为什么不能在函数中使用它呢?


问题答案:

因为它有副作用。

函数中不允许有副作用的构造。它的副作用是更改某些内部状态,以跟踪上次rand()发布的值。

我认为您可以通过将其包含在View定义中然后从View中进行选择来解决它。



 类似资料:
  • 也许这很愚蠢,我是一名Microsoft SQL/C开发人员,以前从未真正使用过任何其他IDE/编写的JAVA/SCALA。我正在将一些Azure SQL查询迁移到Azure Databricks解决方案。 似乎没有等效的TSQLDATEDIFF_BIG函数(https://docs.microsoft.com/en-us/sql/t-sql/functions/datediff-transact

  • 介绍 非确定性是一种通过仅定义问题来解决问题的算法。非确定性程序自动选择符合条件的选项。这项技术很适合逻辑编程。 例如,以下代码返回一对数,其和是一个质数。其中一个数从'(4 6 7)选取,另一个从'(5 8 11)选取。 (let ((i (amb 4 6 7)) (j (amb 5 8 11))) (if (prime? (+ i j)) (list i j)

  • 在形式语言的乔姆斯基分类中,我需要一些非线性、无歧义和非确定性上下文自由语言(N-CFL)的例子? > 线性语言:线性语法是可能的(⊆ 例如 L1={anbn|n≥ 0 } 确定性上下文自由语言(D-CFG):可以使用确定性推下自动机(D-PDA),例如 L2={anbncm|n≥0,m≥0} L2是明确的。 非线性的CF语法是非线性的 Lnl={w:na(w)=nb(w)}也是一个非线性CFG。

  • 程序设计语言让我们得以从烦冗的细节中脱身而出。Lisp 是一门优秀的语言,其原因在于它本身就帮我们处理如此之多的细枝末节,同时程序员对复杂问题的容忍是有限度的,而 Lisp 让程序员能从他们有限的耐受度中发掘出最大的潜力。 本章将会解说宏是怎么样帮助 Lisp 解决另一类重要的细节问题的:即,将非确定性算法转换为确定性算法的问题。 本章共分为五个部分。 第一部分 阐述了什么是非确定性。 第二部分

  • 问题内容: 我有这张桌子 我想获取过去12个月的每月销售量。 如何在列别名上生成月份名称(无需硬编码)? 我尝试了这个:- http://sqlfiddle.com/#!2/ee777/9 但是我想要这种格式的结果表 我试图使用函数给列别名,但这是语法错误。 我如何获得月份和年份的别名(例如:-Oct-12)来代替,等等。 问题答案: MySql没有,因此您必须使用conditional 。 有两

  • 我在获取机器的mac地址时遇到了一个问题,在本问题中使用以下代码解决了这个问题: 但是,我想知道为什么这段代码不起作用。每次读取MAC地址时,它都会返回一个不同的值。一开始我以为是因为getHash,也许用了一个我不知道的时间戳...但即使移除它,结果也会改变。