SQLSRV更新查询以删除空格

时间:2016-07-28 16:03:41

标签: php sql-server

使用MS-SQL,PHP和JSON的组合,我的页面中有一个名为VendorAddress的列,它会像这样输出到浏览器:

 1111 THAT WAY DRIVE �TORRANCE

带有问号的奇怪的黑色钻石。

我已将其缩小到某些用户正在从Excel复制和粘贴这一事实,并且街道和城市之间还有一个额外的空间。我可以防止将来发生这种情况。这些已经保存到表中的对我来说是个问题。

我发现MS-SQL数据库中有超过300条记录有这个额外的空间。

我需要做的是编写一个查询,通过删除这个额外空间来更新列。

 UPDATE [main].[dbo].[suppliers] SET [VendorAddress] = '1111 THAT WAY DRIVE TORRANCE' WHERE [PartnerCode] = '00011144';

这是我正在使用的查询,记录每个具有黑色钻石的PartnerCode(共336个)。我拒绝记录此事的记录。我需要编写一个能够为我完成的查询。

我不知道该怎么做。我在网上找到的所有内容都告诉我使用TRIM,但它只适用于尾随空格。这些不是尾随空格。它们在字符串中。

我希望编写一个查询整个表的查询,并从字符串中删除不必要的空格。

修改

数据库本身无法看到特殊字符。唯一一次看到它是PHP将其输出到浏览器。

基本上,在表格中,该字段包含一个额外的空格。表内不能看到黑色钻石。

3 个答案:

答案 0 :(得分:0)

您似乎应该能够使用REPLACE功能:

UPDATE [main].[dbo].[suppliers] 
    SET [VendorAddress] = REPLACE(VendorAddress, '�', '')

此命令似乎有效:

SELECT REPLACE('1111 THAT WAY DRIVE �TORRANCE', '�', '')

答案 1 :(得分:0)

您是否尝试过将其更新?如果复制/粘贴不起作用,这里有一些用于捕获字形的代码。

DECLARE @Glyph CHAR(1);

SELECT @Glyph = SUBSTRING([VendorAddress]
                          , -- Put numberic position of Glyph in string here
                          ,1)
FROM [main].[dbo].[suppliers]
WHERE [PartnerCode] = '00011144';  -- Record with erroneous Glyph

SELECT @Glyph AS [Questionable Character]
     , [VendorAddress] AS [Before]
     , REPLACE([VendorAddress],@Glyph,'') AS [After]
WHERE [PartnerCode] = '00011144';  -- Use same record as above.    

/*  Uncomment out this bit when you know it works...
UPDATE [main].[dbo].[suppliers] 
SET [VendorAddress] = REPLACE([VendorAddress],@Glyph,'')
WHERE [VendorAddress] LIKE '%' + @Glyph + '%';
*/

答案 2 :(得分:-1)

要用单个空格替换双空格,请使用以下命令:

UPDATE [main].[dbo].[suppliers]
 SET [VendorAddress] = replace([VendorAddress], '  ',' ')
 WHERE [VendorAddress] LIKE '%  %'

重复它直到受到影响的0行。

*编辑*

否则你可以执行这个查询来找出那个角色的代码吗?

select distinct cast([VendorAddress] AS varbinary) FROM [main].[dbo].[suppliers] WHERE [VendorAddress] LIKE '1111 THAT WAY DRIVE%TORRANCE'