Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL';If和语句';?_Mysql_Sql - Fatal编程技术网

Mysql SQL';If和语句';?

Mysql SQL';If和语句';?,mysql,sql,Mysql,Sql,我需要增加一个翻译后文件,以便文件中的产品名称能够将示例的第一列更改为一致的文本格式: "PRODUCT1 1000MG" >> "PRODUCT 1 1000 MG" "PRODUCT 2 1500MG" >> "PRODUCT 2 1500 MG" "PRODUCT3 PLATED 200MG" >> "PRODUCT 3 PLATED 200 MG" 以此类推,需要查询大约50行不同的产品。我唯一能想到的是一个复杂的嵌套IF语句 提前谢谢 如果可

我需要增加一个翻译后文件,以便文件中的产品名称能够将示例的第一列更改为一致的文本格式:

"PRODUCT1 1000MG" >> "PRODUCT 1 1000 MG"

"PRODUCT 2 1500MG" >> "PRODUCT 2 1500 MG"

"PRODUCT3 PLATED 200MG"  >> "PRODUCT 3 PLATED 200 MG"
以此类推,需要查询大约50行不同的产品。我唯一能想到的是一个复杂的嵌套
IF
语句


提前谢谢

如果可以添加表,则可以使用转换表和带有join的更新:

该查询看起来可能是这样的:

UPDATE tab
  SET val = t.newval
  FROM MyTable tab
    INNER JOIN Transl t ON t.oldval = tab.val

如果可以使用code plus mysql创建脚本,那么可以使用正则表达式重建文本。在你的例子中,用它在一组数字前后加一个空格。答案很大程度上取决于你的产品名称所遵循的“来源”格式。他们遵循什么模式?如果它们是不可预测的,你将永远无法更新所有这些。我同意Jan的观点。这只是一个数据问题,似乎没有一个通用的逻辑。我对提供的内容进行了评论,但即使数据更加多样化,通常也有更好的解决方案。您的问题是,此列中的数据是如何聚合的?它是其他字段的串联吗?例如:产品名称、产品id、尺寸(单位:MG)?如果是这样的话,更好的解决方案可能是重新聚合其他列数据并替换现有的数据。您可以避免嵌套的If与存储函数或外部应用程序/脚本混淆。哪一个更好取决于您的处理有多复杂,以及您对MySQL的过程SQL有多在行。即,不是串联或任何其他过程。向前看,文本条目最终将是一致的(因为产品“下降”),不需要进一步增加。
UPDATE tab
  SET val = t.newval
  FROM MyTable tab
    INNER JOIN Transl t ON t.oldval = tab.val