试图找到以空格开头的所有场

时间:2017-01-31 20:30:46

标签: mysql sql database

我的数据库表现得有些奇怪,我发现某些产品的coin_id有一个“空格”作为他们的第一个字母。因此,而不是“123456”,它是“123456”。我试图找到以“空格”开头的所有coin_id,然后删除空格。

4 个答案:

答案 0 :(得分:3)

无需自己查找,只需在UPDATE查询中修剪它们。如果不应该是前导或尾随空格,请使用LTRIMTRIM

UPDATE table_name SET coin_id = LTRIM(coin_id)

正如Dudu Markovitz指出的那样,特别是如果很少更新很多,你可以找到它们并更新它们以获得更好的性能:

UPDATE table_name SET coin_id = LTRIM(coin_id) WHERE coin_id LIKE ' %'

TRIM

UPDATE table_name SET coin_id = TRIM(coin_id)
       WHERE coin_id LIKE ' %' OR coin_id LIKE '% '

答案 1 :(得分:1)

更新有性能影响 只更新您需要更新的内容。

result

答案 2 :(得分:0)

这个怎么样? 从以空格开头的列中删除一个字符

UPDATE table
    SET coin_id = RIGHT(coin_id,LENGTH(coin_id)-1)
    WHERE LEFT(coin_id,1) = ' ';

答案 3 :(得分:0)

首先,为什么一个由数字组成的id存储为字符串?也许“12345”并不是真正具有代表性的价值。

我建议您使用like

update t
    set coin_id = trim(coin_id)
    where coin_id like ' %';

注意:

  • like ' %'允许优化器使用t(coin_id)上的索引。
  • 查询使用trim()。在空格之后,最后也可能是个问题。
  • 如果值为数字,则应将其存储为某种数字。