2012-12-09 44 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