【发布时间】:2020-07-02 22:39:26
【问题描述】:
我遇到了一个有趣的问题,希望有人能解释一下。
我正在尝试从 MS SQL 数据库中提取一个唯一的名称列表 - 但该公司一直对他们的名称草率。他们在一些用户的姓氏末尾附加了一个代码。我需要删除该代码。
示例: 名字姓氏
约翰·多伊
玛丽·史密斯 AST
迈克杰克逊 AST
布莱恩·阿斯特
杰基·马斯特森
在示例中,“AST”是他们附加的代码。它也没有适用于所有姓氏。我需要得到没有代码的只有姓氏的输出。
我原以为这是对 REPLACE 的简单使用。我试过了:
select REPLACE(lastname, ' AST', '') from table
注意搜索短语引号中的前导空格...这确实可以删除附加到姓氏的“AST”。
但是 - 我的问题是它也会删除 AST 出现在字段开头的任何地方。因此,自从该领域以 AST 开始以来,Brian Astor 就以“Brian or”的形式出现。但是...它没有正确地从中间删除 ast,所以 Jackie Masterson 很好。
任何想法为什么它忽略我的搜索短语中的前导空格作为字段的开头?我已经尝试 ltrim 来消除该字段具有前导空格的可能性。
谢谢!
【问题讨论】:
-
哦哦。我有一个忏悔。当我执行不区分大小写的建议时,我意识到我犯了一个错误。我实际上是在替换两个字段的组合短语 replace(firstname + ' ' + lastname, 'AST', '')。因此,它当然是为“Brian Astor”的完整短语寻找“AST”。哈哈。我太笨了……那是一个深夜。当我更改它以便替换实际上只是在姓氏字段上时,没有 $$$ 的“AST”本身可以完美运行。感谢其他所有人。
标签: tsql