我正试图通过一系列"更正" path作为mySQL数据库列的字符串。
由于多个实例可能同时被UPDATEd,我选择使用MySQL的CASE语法,但我并不过分熟悉它。
结果通过" 0"到数据库,而不是字符串。
我见过很多使用整数作为案例的例子,但我需要使用字符串。我认为这让我感到悲伤。
SO社区是否可以查看问题所在?
以下是上面调试行的回显SQL:
UPDATE linksUpdates
SET newTarget = CASE
WHEN hitMissed = '/dir/dir/misLink1' THEN newTarget = 'dir/home'
WHEN hitMissed = '/dir/dir/misLink2' THEN newTarget = 'photos'
WHEN hitMissed = '/dir/dir/anotherBadLink' THEN newTarget = 'dir/home'
END
WHERE misdirect IN (
'/dir/dir/misLink1',
'/dir/dir/misLink2',
'/dir/dir/anotherBadLink'
)
答案 0 :(得分:1)
THEN
语句中的CASE
不需要(或不需要)列名。您在打开CASE
之前已经指定了这个。
UPDATE linksUpdates
SET newTarget = (CASE
WHEN hitMissed = '/dir/dir/misLink1' THEN 'dir/home'
WHEN hitMissed = '/dir/dir/misLink2' THEN 'photos'
WHEN hitMissed = '/dir/dir/anotherBadLink' THEN 'dir/home'
END)
WHERE misdirect IN (
'/dir/dir/misLink1',
'/dir/dir/misLink2',
'/dir/dir/anotherBadLink'
)