Py学习  »  DATABASE

MySQL分割单元值

Michal • 2 年前 • 451 次点击  

我有以下MySQL代码,它(对于每一行)应该取列的值 Cislo 然后更新当前行,设置列 西斯洛 Nazov SUBSTRING s的当前值。

比如说现在 Cislo = 12345LoremIpsum Nazov='' ,更新后应该是 Cislo=12345 Nazov=LoremIpsum .

我尝试了很多不同的方法,但是结果总是空的。

UPDATE `skladovekartyvyrobok00001` SET 
    `Cislo`= SUBSTRING(`Cislo`,0,5),
    `Nazov`= SUBSTRING(`Cislo`,5)
    WHERE `ID`=31;
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132321
 
451 次点击  
文章 [ 2 ]  |  最新文章 2 年前
D-Shih
Reply   •   1 楼
D-Shih    2 年前

第二个参数 SUBSTRING 一开始可能是 1 而不是 0

此函数的任何形式的pos都可以使用负值。pos的值为0时返回空字符串。

然后你可以使用一个小技巧来更新 Nazov 列,然后更新 Cislo

我想你可以试试这个。

UPDATE `skladovekartyvyrobok00001` SET 
    `Nazov`= SUBSTRING(`Cislo`,6),
    `Cislo`= SUBSTRING(`Cislo`,1,5)
    WHERE `ID`=31;

sqlifddle

Bill Karwin
Reply   •   2 楼
Bill Karwin    2 年前

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring 说:

值为0表示 pos 返回一个空字符串。

换句话说,子字符串位置是基于1的,而不是基于0的。