微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅在数字时修剪前导零

如何解决仅在数字时修剪前导零

我有一列包含数字和字母数字值的组合。当值是严格的数字时,数据库会使用前导零(但不总是)存储它,但如果不是,则不会。

以下是一些示例数据:

enter image description here

我需要将这些值用作字符串的一部分,用于连接到另一个表。不幸的是,与另一个表中的此字段对应的字符串部分剪掉了任何纯数字值的前导零。我很难找到一种仅在这种情况下截断前导零的方法

我找到了这个解决方案,但它不适用于 sql Server (2012)。 Trim leading zeroes if it is numeric and not trim zeroes if it is alphanumeric

我也看到了这个,但它也从示例中显示的连字符值中删除了前导零,这不起作用。 Better techniques for trimming leading zeros in SQL Server?

帮助!谢谢!

解决方法

您可以使用:

select (case when col not like '%[^0-9]%'
             then convert(varchar(255),try_convert(numeric(38),col))
             else col
        end)

这适用于前导零后最多 38 位

,

数据库不会在 varchar(文本)字段中存储任何内容,除了您提供的内容。如果你给它前导零,它会保存它们,它没有理由不这样做,因为它只是一段文本。

对于您的问题,您可以这样做:

ISNULL(CAST(TRY_CAST(field AS numeric(38)) AS varchar(insert_field_length))),field)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。