为什么我的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)...这有效地修剪了空白,但我仍然发布了问题,因为我发现我可能会在其他不具有固定长度的列上遇到类似的问题。
答案 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_data
或
select distinct trim(BOTH '\n\r' from crop_year) as crop_year FROM raw_field_data
答案 1 :(得分:0)
也许你在"表格中放置了额外的空间"当您在作物年份输入值时。检查输入表格可能......