0

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

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

或者

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

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

但是我如何在 B 字段中搜索以结尾з但为单词的内容(并非所有数据都为 % 之前з

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

4

2 回答 2

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
于 2012-12-07T20:55:59.700 回答
0

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

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

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

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

于 2012-12-07T19:22:50.473 回答