我正在尝试找到一种安全的方法(如果可能的话)来获取“ url”列并将其复制到“ company”列中……但是我不只是想复制整个内容-让我试着解释。
我想复制公司名称,例如 :苹果,mircosoft..etc(从路径)并将其放入公司列(左侧)。我有大约5000多个结果需要完成,并且必须做到安全。它们都具有与“ ../../ images ....”相同的文件路径结构
我可以对SET使用UPDATE之类的东西吗?
UPDATE table SET company = url
感谢您的反馈!我真的很感激!
答案 0 :(得分:2)
您可以在由您选择的字符分隔的字符串中挑选出最左边的N个“字段”。
SELECT SUBSTRING_INDEX(url, '/', 4)
FROM mytable
LIMIT 10;
返回:
../../images/apple
etc.
然后使用-1获取该结果的最右边字段以获取最后一个字段。
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(url, '/', 4), '/', -1)
FROM mytable
LIMIT 10;
返回:
apple
对表达式满意后,可在UPDATE中使用它:
UPDATE mytable SET company =
SUBSTRING_INDEX(SUBSTRING_INDEX(url, '/', 4), '/', -1);
请参见https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-index
答案 1 :(得分:1)
在mysql 8中,您可以使用regexp_substr函数使用正则表达式查找子字符串。像这样:
change
将找到不是SELECT REGEXP_SUBSTR(url, '[^/]+', 14) FROM table;
而是从字符14开始的任何字符(在您的/
前导字符串之后。