2011-12-09 38 views
0

我有一个数据库表,其中包含上传图像的路径。有时候这个图像指向一个外部服务器,但有时它是一个指向同一个服务器的相对路径。根据前4个字符将文本添加到选定的数据库列

在创建SQL查询,我需要做此项检查:

  1. 如果路径的第4个字符,http然后就返回
  2. 否则在前面加上硬编码的URL字符串的路径

我一直在努力使IF check检查和SUBSTRING工作。 任何想法?

回答

2

前缀字符串

select IF(LEFT(column,4) = "http", column, CONCAT("string", column)) FROM table 

追加字符串

select IF(LEFT(column,4) = "http", column, CONCAT(column, "string")) FROM table 
+0

leo希望* *(不加前缀)将硬编码的URL字符串添加到路径中。 –

+0

我们走了,只是一个切换concat col的例子 – Lee

+0

实际上第一个例子完美的工作,因为我需要预先安排,这正是问题所在。公认! –

1

是否这样?

CASE WHEN LEFT(url, 4) = 'http' THEN url ELSE CONCAT(<your hard-coded url>, url) END 
+0

LEO想*追加*硬编码的URL字符串的路径。 –

+0

@MarkBannister - 糟糕,用CONCAT()更新。我已经做了一个前置(基于标题和对我有意义的行为)。虽然附录可能是正确的,因为这是问题中的措辞...... – MatBailie

1

尝试:

select concat(path, case substring(path,1,4) 
        when 'http' then '' 
        else hard_coded_url end) 
from 
... 
相关问题