【问题标题】:T-SQL Replace blank space [duplicate]T-SQL替换空格[重复]
【发布时间】:2015-12-11 09:44:45
【问题描述】:

我有一个表格,其中数字存储在 nvarchar 数据类型中。数据如下:

Numbers
---------
200
504 040
694 380
153 272
26 296

现在我想去掉数字中的空格。但是,REPLACE(Numbers,' ','') 不起作用,因为空格似乎是某种特殊的“blank space”。

所以我尝试使用我在 SO (link) 上找到的函数在这里找到任何特殊字符。什么都没有发生,没有找到任何特殊字符。

所以下一步是将记录导出到.csv 文件并使用TotalCMD 检查数据的编码。结果可以在这里看到:

任何想法可能会出错以及如何替换这些空格?我认为 Unicode 编码显示了问题,但我缺乏这方面的知识,所以我也可能是错误的。

更新 #1 - 向您展示更多

表格如下所示:

Category    Number
-------------------
Cars           200
Cars       504 040
Cars       694 380
Cars       153 272
Cars        26 296
Bikes       50 000
Bikes       21 412
Bikes        8 541

现在我运行查询:

SELECT 
    t.Category, REPLACE(t.Numbers,' ','')
FROM 
    tableMix AS t
WHERE 
    t.Category = 'Cars'

SELECT 
    t.Category, REPLACE(t.Numbers,' ','')
FROM 
    tableMix AS t
WHERE 
    t.Category = 'Bikes'

奇怪的是 - 第一个查询不会替换 Cars 类别的空格,但是第二个查询对于 Bikes 类别的数字值没有任何问题。

【问题讨论】:

  • 我认为你做错了什么,因为替换必须在这里工作。请发布您的查询。
  • 我不这么认为,与其他号码一样,我没有问题,我也是这样做的。查询已经发布,只是没有 SELECT 和 FROM 子句。我仍然为你更新问题,秒。
  • 试试this question的回答
  • 谢谢。似乎就是这样 - NCHAR(160)。

标签: sql-server tsql encoding replace


【解决方案1】:

尝试像这样从 nvarchar 中生成数字

SELECT 
    t.Category, cast(t.Numbers as int)
FROM 
    tableMix AS t
WHERE 
    t.Category = 'Cars'

【讨论】:

  • 很遗憾,您无法做到这一点。此外,问题已经解决,请参阅问题中的 cmets。
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多