2012-12-09 45 views
-2

我试图找到解决方案到处都是,但不能。MySQL查询 - 多个值

这里是我想要做的事:

我有我的数据库中的单元格具有多个条目(类似于XML文件)。这里有几行如下:

main_description="" 
main_multiblogger=1 
main_comment="1" 
main_comment_multiple="0" 

我该如何运行一个查询,以选择和更新一个特定的值?我需要解析这个来实现我的目标吗?

谢谢!

+0

你的意思是你有一个'VARCHAR'列,其值与你发布的值相似?你想读取这些值然后改变它们(SELECT和UPDATE)? – Pharaoh

+0

是的,我对术语不熟悉,我开始学习过程。我试图从仅仅是一个网页设计师分支:) – Jbevan

回答

1

是的,如果您将半结构化数据*存储在单个列中,那么使用SQL表达式来选择或更新数据中的单个元素是很困难或不可能的。

您需要将整个列选回到您的应用程序中,解析出来,以您想要的方式修改它,然后将其全部更新到数据库中,覆盖旧值。 *“半结构化”我的意思是数据有你理解的结构,但SQL不。

+0

你有链接到一个文件,可以帮助我解析这个? – Jbevan

+0

我不知道你在用什么编程语言。如果是PHP,那么尝试http://php.net/manual/en/function.parse-ini-string.php –

+0

是的,它的PHP。感谢链接,我会检查到这一点。 – Jbevan

0

这取决于“具体的价值”是什么。
的一种方法是:

SELECT * FROM table_name WHERE column_name='main_comment="1"' 

或者:

SELECT * FROM table_name WHERE column_name LIKE 'main_comment=%' 

也许你应该考虑拆分列到keyvalue

SELECT * FROM table_name WHERE key='main_comment' 

或者:

SELECT * FROM table_name WHERE key='main_comment' AND value='1' 

如果其中一个适用于您,您可以使用UPDATE声明执行相同操作。

+0

这是用于Joomla组件Easyblog。我无法修改那里的现有数据,我想替换的特定字段之一是:notification_email =“[email protected]” – Jbevan

+0

然后,示例#3和#4不在竞赛中。也许其他两个可以帮助你,即使只是选择你必须在PHP中解析的行数。 – Pharaoh