2 edwordwang Edwordwang 于 2016.09.18 20:54 提问

mysql sql语句实现将一个字符串里面的值换位置, 15C

例如 : 在一个字段中 tags 值是:“天空 一年级”修改为 “一年级 天空” 应该怎样做 ,,是换取大量数据,下标不明去,要根据字段找出来,也有可能为空,也有可能就一个值。

8个回答

waterhexuan
waterhexuan   2016.09.18 21:09

update 解决不了吗

Edwordwang
Edwordwang 解决不了
大约一年之前 回复
waterhexuan
waterhexuan   2016.09.18 21:48

你的字段值都是以空格分割的吗

CSDN_ZOL
CSDN_ZOL   2016.09.18 23:20

我想应该是大量数据来调换,如有有空格,按照空格切分,然后再末尾追加。如果没有空格,那么就要写存储过程,按照汉语的分词来切分。将词汇用汉语词汇分割,分割完了追加末尾。

Edwordwang
Edwordwang 大神指教
大约一年之前 回复
Edwordwang
Edwordwang 存储过程具体怎吗写呀
大约一年之前 回复
xubo_ob
xubo_ob   2016.09.19 09:37

mysql中的replace是全部替换。 将2个进行交叉这个是不可行的,建议用截取substring.
例如 “天空 一年级”修改为 “一年级 天空”
update tableA set columnA = substring(columnA,4,3)+substring(columnA,3,1)+substring(columnA,1,2)

如果不知道截取的字符串位置就直接用LOCATE(substr,str) 函数进行定位然后拆分合并

xubo_ob
xubo_ob 回复Edwordwang: 完全懵了 。 既然是互换位置,当然是2个啦。 如果是一个,或者3个、4个,分别是什么处理需求?
大约一年之前 回复
zoujian1993
zoujian1993 回复Edwordwang: 那就好办了啊,利用空格这个标识符就可以找到分割的位置了,分割开之后交换位置然后链接起来
大约一年之前 回复
Edwordwang
Edwordwang 回复成功是每天进步1跬步: 大神指教,
大约一年之前 回复
Edwordwang
Edwordwang 回复成功是每天进步1跬步: 有可能是空的,那个下标不明确,也不一定是两个,或者这一个,想看sql 语句,谢谢
大约一年之前 回复
xubo_ob
xubo_ob 靠,亲自试了下,发现mysql竟然不能用+来拼接,需要使用函数concat(str1,str2,str3...)
大约一年之前 回复
zoujian1993
zoujian1993   2016.09.19 10:01

其实,没太懂你到底要实现一个什么功能,如果只是想单独的查询出来是你说的那种效果,并且你知道截取位置。那只需要用到两个函数就可以了。分别是截取字符串:substr和连接:concat。比如表名为test,字段为name。name里想把前两个字换到最后。

 select concat(substr(name,3,length(name)),substr(name,1,2)) as name from test;

Edwordwang
Edwordwang 回复没伞的孩子只能跑: 两个值中间有个空格
大约一年之前 回复
zoujian1993
zoujian1993 回复Edwordwang: 位置不明确的话,就难搞了,又没有标识符什么的
大约一年之前 回复
Edwordwang
Edwordwang 我不知道他的具体下边,也可能是空的,是换大量的数据
大约一年之前 回复
u013238336
u013238336   2016.09.19 10:19

把 【 select 天空,一年级 from 表;】换成:【select 一年级,天空 from 表;】,查出的结果就换了。

Edwordwang
Edwordwang 看不懂
大约一年之前 回复
waterhexuan
waterhexuan   2016.09.20 13:38

你最好 列出几组 有特点的数据样本 看看究竟是什么样的数据

waterhexuan
waterhexuan   2016.09.20 13:39

写个 函数应该能搞的定

waterhexuan
waterhexuan 回复Edwordwang: 你能多提供几组数据样本吗 一个的话 总结不出什么规律
大约一年之前 回复
Edwordwang
Edwordwang 谢谢,
大约一年之前 回复
Edwordwang
Edwordwang 求大神帮忙写个,
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!