我的 MySQL 表中有一些列和一些描述,
id / name / descriptions
1 / John / a1b01,Value 1,2,1,60|a1b01,Value2,1,1,50|b203c,Value 1,0,2,20
2 / Sam / a1b01,Value2,2,3,50|b203c,Value 2,0,0,45
3 / Nick / a1b01,Value 1,2,1,60|a1b01,Value2,1,1,50
...
对于不同的人你可以看到,一些变量是相同的Value 1,Value2(可以包含空格)/a1b01,b203c 等等,因为描述的数量可能会有所不同,我无法将它们分开。
我需要两个 MySQL 命令;
- 搜索两个变量(例如:“a1b01”、“Value 1”,这些将从函数中获取)
- 如果在相关部分找到两个值,则函数将删除/更新记录
我想我应该使用这样的函数
function do_action (command,code,desc,new1,new2,newresult) {
if (command == "delete") {
// First SQL command to delete the founded part
// but the ramains part should be kept
// so final result would be : a1b01,Value2,1,1,50|b203c,Value 1,0,2,20 (for John)
} elseif (command == "update"){
// Second SQL command that update the founded part
// Update founded part
// so final result would be : a1b01,Value 1,new1,new2,newresult|a1b01,Value2,1,1,50|b203c,Value 1,0,2,20 (for John)
}
}
但我不知道应该使用哪些 MySQL 命令?
欢迎您提出所有解决方案、建议或改进。
编辑: 使用的语言是 PHP,我通过 Jquery 的 post 方法从 php 页面 (index.php) 发送数据,然后 php 文件 (data.php) 获取这些参数并执行MySQL数据库。
实际上可能除了 PHP 驱动的解决方案之外别无他法,但我只是要求一个 php+MySQL 函数;
函数接受一些参数并搜索如果第二个+第三个参数(code,desc)一起存在于表中的任何描述行中(搜索),然后让函数更新这部分(用新的替换)或删除记录到第一个参数( 命令 -> 删除/更新
)
最佳答案
将问题分成几个步骤:
- 确定如何访问数据库。(您没有说明您使用的是什么语言,而且您似乎还不知道如何访问数据库。)
- 弄清楚是否有可能雇用更好的人,normalized数据结构。
- 如果是,您的任务就是小菜一碟。
- 如果不是,您必须先从要更新的条目中读取
值
字段,然后使用您的程序语言找到要替换的部分。 (MySQL 中没有正则表达式替换。) - 然后不使用 SQL 而是使用您的过程语言来组装一个新的值字符串。
- 如果你出于某种原因不想这样做(你要求一个 MySQL 命令),你可以使用 REPLACE更新值的函数:
UPDATE the_table SET values = REPLACE(values, "a1b01,Value 1,2,1,60", "Value 1,new1,new2,newresult"
关于php - 与命令相关的 Mysql 表行中的文本搜索和删除/更新(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159788/