SQL在其他字段数据中查找并更新另一个字段

时间:2012-12-07 18:45:49

标签: mysql sql

我在为mysql db做这样的sql查询时遇到了麻烦: 我需要在我的数据库中更新字段A,但我还有B字段,其中包含大量数据,例如:

ASIAN HORSE 70з рус 600A (261x175x220)

Бэрен polar 55/59з (555112) 480A (242x175x190) 

我必须获取70з并将其设置在字段A中,并且55 /59з相同(但是用于另一个记录)。

但是我怎样才能在B字段中搜索з的结尾但是字(不是所有数据都是з之前的%)

我知道,这听起来像是家庭作业...但我真的不知道如何选择只有一些结尾的单词......

2 个答案:

答案 0 :(得分:1)

MySQL函数substring_index可用于选择由某些内容分隔的字符串片段。例如,这会从MyColumn中选出第三个“单词”:

select substring_index(substring_index(MyColumn, ' ', 3), ' ', -1) from MyTable

70зASIAN HORSE 70з рус 600A (261x175x220)中的第三个“字”。)

更新如果您要查找以“з”结尾的“单词”而不是第三个单词,则可以使用:

select substring_index(substring_index(MyColumn, 'з', 1), ' ', -1) from MyTable

这会将'з'视为分隔符,并将其从结果中删除。你可以用concat添加它:

select concat(substring_index(substring_index(MyColumn, 'з', 1), ' ', -1), 'з') from MyTable

答案 1 :(得分:0)

如果您正在尝试解析该字段,以便第三个值始终进入特定字段,那么您遇到了一个难题并且可能想要创建一个用户定义的函数。

但是,如果您只想查看是否存在70з并设置另一个字段,那么这应该有效:

update t
    set B = '70з'
    where A like '% 70з' or A like '% 70з %' or A like '70з %' or A = '70з'

这使用空格来定义单词边界,并考虑字符串是在开头,中间,结尾还是在A中的整个值。