sql server - 将不带引号的常量传递给 DATEPART 等函数
我想创建一个接受常量的函数,例如 datepart 函数接受 yy/mm/dd/hh/ ,
如下所示:
选择日期部分(dd, getdate())
我想创建自己的接受 dd 的函数 像 'dd'
这样的字符
不是我想要的
选择 MyFunc(dd, getdate())
而不是
选择 MyFunc('dd', getdate())
i would like to create a function which accepts a constant like
the datepart function accepts yy/mm/dd/hh/
like:
select datepart(dd, getdate())
i would like to create my own function that accepts dd
not char like 'dd'
i want
select MyFunc(dd, getdate())
and not
select MyFunc('dd', getdate())
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法真正将 UDF 的输入限制为一小组值(据我所知)。
我建议为您的枚举值创建一个表格 - 像这样:
当然,我的示例过于简单,但您明白了。
另外,如果您计划在 set 语句中使用 udf,则出于性能原因,请考虑将该函数设为表值函数。 我在博客中介绍了各种函数类型的性能影响:
http://thehobt.blogspot.com/2009/02/scalar-functions-vs-table-valued.html
You can't really constrain the input of a UDF to a small set of values (to the best of my knowledge).
I would recommend creating a tabe for your enumerated values - something like this:
Of course, my example is oversimplified, but you get the idea.
Also, consider making the function a table-valued function for performance reasons, if you're planning on using the udf in set statements. I blogged about the performance implications of various function types here:
http://thehobt.blogspot.com/2009/02/scalar-functions-vs-table-valued.html
我认为你在这方面运气不好。 如果您不单引号这些字符,它们将被解释为名称 - 但如果您希望它们按照您建议的方式使用,则不能在任何地方将它们定义为名称。
I think you're out of luck on this. If you don't single-quote the characters, they'll be interpreted as a name--but you can't have defined them as a name anywhere if you want them to be used in the manner you propose.