使用T-SQL生成符合正则表达式的随机/示例数据

3

我需要根据给定的正则表达式生成一些随机数据。

例如,我有以下规则:

 1) IsRegEx('^(((([0-1]?[0-9]|2[0-3])(:[0-5][0-9])?)?:)?[0-5])?[0-9]$', #COMMENT#)
 2) IsRegEx('^[0-9]+:([0-5][0-9]):([0-5][0-9])$',#COMMENT#)
 3) IsRegEx( '^[0-9]+$' , #COMMENT#)

还有许多其他的... 我需要生成文本#Comment#以通过规则。不必要有很多变化,一个就足够了。

有人做过这样的事吗?

提前感谢。

2个回答

3
在Sql Server中正确的方法是通过CLR存储过程或CLR用户定义函数,如果您的Sql Server版本允许此操作。否则,没有任何可接受的方法。

使用存储过程来完成这个任务没有问题。我想问的是有没有更好的方法或者更简单的方式来实现。我可以写一些检查,例如如果我有"[0-9]+",就从0到9中随机选择一个数字与我的字符串相连,但是变量太多了,用这种方式会耗费太多时间。 - gotqn
就像我所说的那样 - 在本地 T-SQL 中没有简单、可接受和快速的方法来完成它。 - Oleg Dok
@Joro,CLR存储过程与T-SQL存储过程不同。http://msdn.microsoft.com/en-us/library/ms131094.aspx - Ben English
@Ben,谢谢你。是的,有一些。对我来说似乎太复杂了,但我会尝试一下。再次感谢你们所有人。 - gotqn

1

使用T-SQL无法做到这一点。 T-SQL甚至不支持正则表达式。如果您拥有Visual Studio Premium,则可以创建数据库项目并使用正则表达式数据生成器创建所需的测试数据。请查看“使用数据生成器为数据库生成测试数据”。

如果您没有VS Premium,则可以将自己的生成器创建为CLR存储过程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接