我爲MySQL(perl的)代碼:IF()語句替代SQLite中
UPDATE pages
SET rkey = rkey + 2,
lkey = IF(lkey >= $key, lkey + 2, lkey)
WHERE rkey >= $key
我需要使用此代碼使用SQLite,但沒有支持IF()函數。我可以做什麼?
我爲MySQL(perl的)代碼:IF()語句替代SQLite中
UPDATE pages
SET rkey = rkey + 2,
lkey = IF(lkey >= $key, lkey + 2, lkey)
WHERE rkey >= $key
我需要使用此代碼使用SQLite,但沒有支持IF()函數。我可以做什麼?
對於通用的SQL,您可以使用CASE
:
情況下使用提供IF-THEN-ELSE類型的邏輯到SQL。其語法是:
SELECT CASE ("column_name") WHEN "condition1" THEN "result1" WHEN "condition2" THEN "result2" ... [ELSE "resultN"] END FROM "table_name"
http://www.sqlite.org/lang_expr.html從部分 「的情況下表達」
例如
UPDATE pages
SET rkey = rkey + 2,
lkey = CASE WHEN lkey >= $key THEN lkey + 2 ELSE lkey END
WHERE rkey >= $key
約SQLite的& CASE另一個鏈接(用例與子查詢更新)http://sqlite.awardspace.info/syntax/sqlitepg09.htm
情況下,可以在通用SQL UPDATE使用,但我對SQLite的支持更新的任何信息與CASE
http://www.craigsmullins.com/ssu_0899.htm部分 「使用CASE表達式當修改數據」
UPDATE pages
SET rkey = rkey + 2,
lkey = IF(lkey >= $key, lkey + 2, lkey)
WHERE rkey >= $key
???它到
UPDATE pages
SET lkey = lkey + 2
WHERE rkey >= $key AND lkey >= $key
UPDATE pages
SET rkey = rkey + 2,
WHERE rkey >= $key
不是更好嗎?
謝謝,但我需要它在UPDATE子句 – VeroLom 2011-02-02 12:13:08