由於多個遺留系統,我正在處理的項目有一個由10列組成的表。MySQL字符串操作和數據重排
這些10列中,兩個數據將總是出現在兩個最後五列,通過標識字符串preceeded。
最後5列是pair0
,pair1
,pair2
,pair3
,並且pair4
我正在尋找在二那些五列的是tx-speed=3D...
和rx-speed=3D...
數據的格式。在每個字符串之後是一系列任意長度的數字。
我不能修改數據插入到該表中的程序,我只能修改它之後。
在每一行,現在和將來,我希望確保該系列的數字下面tx-speed=3D
是在pair1
列,該系列是繼rx-speed=3D
數字是在pair2
列。這兩列的內容並不重要,只要tx-speed
和rx-speed
值不會相互覆蓋。
作爲該項目的一個不幸的約束,這不能在一個數據庫觸發器完成的,它必須是作爲cron作業或類似的部分。
我這裏的大問題是,我不是一個SQL管理員。我可以用許多可用的語言之一編寫腳本,但效率將成爲關鍵,並且將數據從SQL中提取出來以檢查它並將其從另一個平臺重新插入將會非常低效。
我開始嘗試寫一個SQL腳本來做到這一點,但我不明白遠遠不夠有關SQL是如何工作的,甚至讓它工作。
(希望)澄清一點,我已經把下面的僞代碼,希望有人能做出一個SQL查詢出這個,我可以用我的目的。
for each row:
@tx = ""
@rx = ""
txstr = "tx-speed=3D"
rxstr = "rx-speed=3D"
if (pair0 LIKE txstr+"%")
@tx = SUBSTRING(pair0, FROM txstr.count-1)
elsif (pair1 LIKE txstr+"%")
@tx = SUBSTRING(pair0, FROM txstr.count-1)
elsif (pair2 LIKE txstr+"%")
...
endif
if (pair0 LIKE rxstr+"%")
@rx = SUBSTRING(pair0, FROM rxstr.count-1)
elsif (pair1 LIKE rxstr+"%")
...
endif
pair1 = @tx
pair2 = @rx