CASE WHEN在Access SQL上不存在

时间:2015-04-23 23:28:03

标签: mysql sql ms-access-2013

我在几个小时前发现CASE WHEN无法处理访问查询。我的SELECT语句中有一个复杂的CONCAT,但它是用MySQL编写的:

SELECT CONCAT(
'www.mywebsite.com/catalogsearchtool?title='
, REPLACE(tblTitles.Content_Name, '&', '%26')
, '&contributor=ln:'
, CASE WHEN LOCATE('; ',tblTitles.Contributors) > 0
THEN REPLACE(REPLACE(REPLACE(
CASE WHEN RIGHT(TRIM(tblTitles.Contributors), 1) = ',' THEN LEFT(TRIM(tblTitles.Contributors), CHAR_LENGTH(TRIM(tblTitles.Contributors)) - 1) ELSE TRIM(tblTitles.Contributors) END
, '&', '%26'), '; ', ',rl:Author&contributor=ln:'), ', ', ',fn:')

ELSE REPLACE(REPLACE(
CASE WHEN RIGHT(TRIM(tblTitles.Contributors), 1) = ',' THEN LEFT(TRIM(tblTitles.Contributors), CHAR_LENGTH(TRIM(tblTitles.Contributors)) - 1) ELSE TRIM(tblTitles.Contributors) END
, '&', '%26'), ', ', ',fn:')
END
, ',rl:Author&language='
, LOWER(tblTitles.language)
) AS 'link'

基本上它的作用是它根据名称生成链接,该名称可以在名为Contributors的列中找到。该列具有以下顺序:

last_name, first_name

last_name, first_name; last_name, first_name

由于我无法控制的原因,该列中可能有许多名称。因此,对于上面的查询,将有两个结果(对于2个名称):

www.mywebsite.com/catalogsearchtool?title=tile123&contributor=ln:smith,fn:john,rl:Author&contributor=ln:smith,fn:jane,rl:Author&language=english

和(1个名字):

www.mywebsite.com/catalogsearchtool?title=title5678&contributor=ln:smith,fn:john,rl:Author&language=english

有人可以帮我翻译这个逻辑到Access SQL吗?

0 个答案:

没有答案