数据 1、2、3、4、11、21、99
我想获得第 1、第 2、第 3、第 11、第 21 和第 99
我可以自己动手,但是 SQL Server 中是否有任何内置的功能可以为我做这件事?推论:我还将寻找将数字转换为单词的函数,例如:
72,451 -> 七万二千,四百五十一
并期望它(如果存在)属于同一系列格式化方法。
数据 1、2、3、4、11、21、99
我想获得第 1、第 2、第 3、第 11、第 21 和第 99
我可以自己动手,但是 SQL Server 中是否有任何内置的功能可以为我做这件事?推论:我还将寻找将数字转换为单词的函数,例如:
72,451 -> 七万二千,四百五十一
并期望它(如果存在)属于同一系列格式化方法。
不,没有任何内置函数可以做到这一点。这应该在表示层而不是来自数据库的数据中处理。
编辑:基于“糟糕的表示层”的存在,如果这必须在数据库中完成,我建议创建一个 UDF 将值转换为序数或单词。它绝对不会漂亮。
来自评论:对于问题的第二部分,Daniel 使用了此处找到的脚本:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=86067
关于请求的第二部分——将数字转换为单词——在SQL# SQLCLR 库的免费版本中提供了一个函数Util_ToWords(我是该库的作者,同样,该函数位于免费版)就是这样做的:
Util_ToWords函数最初旨在模仿 Crystal Reports 中提供的类似函数,该函数有助于打印支票(至少在美国是这样)。
请注意措辞:
目前只有英文,并且
对以百万开头的值使用“短比例”名称。有关“短比例”和“长比例”名称的更多信息,请参阅: