删除MySQL中的尾部空格

时间:2015-03-24 01:17:59

标签: php mysql

为什么我的SELECT不会忽略空格,为什么TRIM似乎没有效果?

以下是SELECT DISTINCT crop_year from raw_data

之类的部分结果
Rows    crop_year
105755  '2010'
12326   '2010 '
256363  '2011'
319321  '2011 '
...

我输入单引号来说明存在尾随空格的事实。

我的生产服务器上有2个问题...我无法在本地复制:

一个。我希望SELECT忽略空格,正如许多其他问题所解释的那样,以及MySQL Docs,但它显然不会在我的prod服务器上以这种方式工作。

B中。我希望UPDATE raw_data SET crop_year = TRIM(crop_year)能够解决问题,但运行此查询会导致0个受影响的行。

其他背景: 此列类型为VARCHAR(11)。 如果它是相关的,该表包含混合存储引擎和排序规则:此表是MyISAM,此列目前是latin1_swedish_ci。

PS:在这种特殊情况下,year始终是一个4位数值,所以我最终将列从VARCHAR(11)更改为CHAR(4)...这有效地修剪了空白,但我仍然发布了问题,因为我发现我可能会在其他不具有固定长度的列上遇到类似的问题。

2 个答案:

答案 0 :(得分:1)

this question的帮助下计算出来。 TRIM不尊重所有空格......只是空格。就我而言,我需要:

select distinct trim(BOTH '\r' from crop_year) as crop_year FROM raw_field_data

其他变体可能包括

select distinct trim(BOTH '\n' from crop_year) as crop_year FROM raw_field_dataselect distinct trim(BOTH '\n\r' from crop_year) as crop_year FROM raw_field_data

答案 1 :(得分:0)

也许你在"表格中放置了额外的空间"当您在作物年份输入值时。检查输入表格可能......