【问题标题】:How to change letter SQL Server?SQL Server怎么改信?
【发布时间】:2018-08-05 07:28:55
【问题描述】:

我更改单词字母(5 和 6 个字母更改)和一些字母掩码。但我接受错误更改信,我不做掩蔽。

我的查询:

SELECT
    NAME,
    CONCAT(SUBSTRING(NAME, 1, 4),
           SUBSTRING (NAME, 6, 1),
           SUBSTRING(NAME, 5, 1),
           SUBSTRING(NAME, 7, LEN(NAME) -5))
FROM
    INFORMATION

这个错误是

传递给 LEFT 或 SUBSTRING 函数的长度参数无效。

我该怎么办? (SQL Server 2014。)

【问题讨论】:

  • 分享你的样本数据和输出
  • 此数据为 ID 和 Name.ID:1 和 Name:Weather
  • @user10181472 如果您真的需要其他人的帮助,那么您的问题应该是清晰且适当的信息,所以如果只是将您的表名和列值放在您的问题中,那么它有助于其他人解决您的问题希望你明白我的意思
  • ID 名称状态 1 Weather Good 2 Days DaysNumber 我保留天数信息和天数天气。我尝试简单的示例数据库,我想试试我能做什么?
  • 您已经问了两次完全相同的问题,只是 3&4 被 5&6 替换了。请看我对另一个问题的回答。 stackoverflow.com/questions/51695230/…

标签: sql sql-server data-masking


【解决方案1】:

您遇到的问题是您将 -5 传递给小于 5 的“NAME”列的长度,并且函数 SUBSTRING 不能接受负值。如果您想避免这种情况,您可以随时将 ABS 添加到您的表达式中,但是,您需要验证它是否返回了您所期望的:

SELECT
    NAME,
    CONCAT(SUBSTRING(NAME, 1, 4),
           SUBSTRING(NAME, 6, 1),
           SUBSTRING(NAME, 5, 1),
           SUBSTRING(NAME, 7, ABS(LEN(NAME) -5)))
FROM
    INFORMATION

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多