我在为mysql db做这样的sql查询时遇到了麻烦: 我需要在我的数据库中更新字段A,但我还有B字段,其中包含大量数据,例如:
ASIAN HORSE 70з рус 600A (261x175x220)
或
Бэрен polar 55/59з (555112) 480A (242x175x190)
我必须获取70з并将其设置在字段A中,并且55 /59з相同(但是用于另一个记录)。
但是我怎样才能在B字段中搜索з
的结尾但是字(不是所有数据都是з
之前的%)
我知道,这听起来像是家庭作业...但我真的不知道如何选择只有一些结尾的单词......
答案 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中的整个值。