【问题标题】:Remove all after space in SQL Server data column [closed]删除 SQL Server 数据列中的所有空格 [关闭]
【发布时间】:2013-05-17 21:42:21
【问题描述】:

我在 SQL Server 中有一个始终以数字开头的数据列,有时在数字后面有一个空格,其中包含其他详细信息。这是一个文本列。我需要一个查询,如果有空格或其他信息,它将删除所有内容,包括空格。换句话说,我只需要这个列中的数字。有时只有一个数字,有时没有。我可以在执行此操作的查询中获得帮助吗?

【问题讨论】:

  • 这听起来很容易做到。请更新您的问题,说明您尝试了什么以及为什么它不起作用。
  • 发布您尝试过的内容以及遇到的问题,我相信我们可以提供帮助
  • 将列更改为 int 将修剪所有空间
  • 只做每一步,如果没有空格取整值,就找一个空格。如果空间将所有内容都放在空间位置的左侧。同意freshprince...非常简单。
  • @trevoray 否决票的原因是因为您几乎要求“为我编写代码”。这不是这个网站的工作方式。您遇到了一些没有按照您认为应该做的事情的代码,您发布一个问题,我们帮助解释为什么它不做,然后提供一个可能的解决方案。

标签: sql sql-server


【解决方案1】:

我会建议这样的事情:

SELECT CASE 
WHEN ISNUMERIC(SUBSTRING(YourNumber, 1)) THEN SUBSTRING(YourNumber, 1, len(YourNumber) -1)
WHEN ISNUMERIC(SUBSTRING(YourNumber, 2)) THEN SUBSTRING(YourNumber, 2, len(YourNumber) -2)
WHEN ISNUMERIC(SUBSTRING(YourNumber, 3)) THEN SUBSTRING(YourNumber, 3, len(YourNumber) -3)
WHEN ISNUMERIC(SUBSTRING(YourNumber, 4)) THEN SUBSTRING(YourNumber, 4, len(YourNumber) -4)
END
FROM TableName

【讨论】:

    【解决方案2】:

    试试这个

     Select case When charIndex(' ', columnName) > 0 
               Then substring(columnName, 1, charIndex(' ', columnName)-1)
               else ColumnBame End
     From tableName
    

    【讨论】:

      【解决方案3】:

      试试这个(用你拥有的任何名称替换 mydb 和 textfield):

      UPDATE mytable
      SET textfield = LEFT(textfield+' ', CHARINDEX(' ', textfield) - 1)
      WHERE CHARINDEX(' ', textfield) > 0
      

      【讨论】:

      • 太棒了!谢谢 XShirase!并感谢您不要求我发布我尝试过的内容和无效的内容。您的答案完美无缺,这正是我所要求的!
      • 您仍然应该发布您尝试过的内容。 SO 是关于分享知识,而不是简单地回答你的问题。通过研究,您会在这里找到答案:stackoverflow.com/questions/1668014/… 原谅您,这一次,如果您答应阅读常见问题解答 ^^
      • 此解决方案将永久消除额外数据...您确定这是您想要的吗?如果是这样,您可能会考虑修改客户端代码,以便首先不插入这些不需要的详细信息(使列成为数字类型而不是文本等)。 Otoh,如果您只是想在读取(选择)数据时消除细节(如您的问题所示),那么您应该使用 Select 语句,而不是 Update。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多