我有一个包含 [Work Phone] (nvarchar) 列的表。使用该数据库的软件允许用户输入任何字符,因此很多列都包含诸如“ 555-555-5555 Ext. 1234 Bob Jones ”之类的内容。我唯一需要的是数字,我打算将电话和分机分成单独的列。在运行一个函数和其他一些事情之后,我只剩下电话和分机号码了。所有空格和字母均已删除(例如 55555555551234)。
我尝试拆分的方式是,我首先要通过计算字段中的字符总数(在我的示例中为14)来获取扩展名,然后将该数字减少 10 (在电话号码(不包括国家代码))。因为扩展名可能介于 1-5 个字符之间,所以我尝试使用 LEN() 来获取此计数,然后将其减少 10。
SELECT RIGHT([Table].[Column], LEN([Table].[Column]) -10)
FROM [Table]
我得到的是“传递给 RIGHT 函数的长度参数无效。”
我不完全理解这个问题,因为如果我只是做类似的事情:
SELECT LEN([Table].[Column]) -10
SELECT LEN('55555555551234') -10
我得到了预期的值 4 。
将此参数传递给 RIGHT 的正确方法是什么,以便我可以得到我想要的(或者是否有更好的方法来做到这一点)?