我已经在谷歌上搜索了很多次,但没有找到答案。或者,至少,没有找到我希望找到的答案。我正在尝试将一个REGEXP_SUBSTR搜索从Teradata转换为SQL Server 2016上的T-SQL。
这是Teradata中的编写方式:
REGEXP_SUBSTR(cn.CONTRACT_PD_AOR,'\b([a-zA-Z]{2})-([[:digit:]]{2})-([[:digit:]]{3})(-([a-zA-Z]{2}))?\b')
花括号中的数字指定了可以匹配特定REGEXP的字符数。因此,这将查找如下格式的合同号:一九九九年九月二十九日
这在T-SQL中是不可能的吗?指定要查看的字符数?所以我必须编写如下代码:
where CONTRACT_PD_AOR like '[a-zA-Z][a-zA-Z]-[0-9][0-9]-[0-9][0-9][0-9]-[a-zA-Z][a-zA-Z]%'
难道没有更简单的方法去做这件事吗?
1条答案
按热度按时间w1e3prcc1#
虽然不是一个答案,但使用这个方法可以使事情变得不那么单调。如果您在代码中多次需要它,这是一种设置格式并重用它的方法,同时保持它的清晰和可读性。
在顶部设置一个格式变量,然后进行必要的替换来构建它。然后在代码中使用格式名称。这样可以节省一些输入,使代码不那么模糊,并且如果在多个查询中需要该格式变量,则可以重用该格式变量,而无需进行所有输入。