我目前正在尝试将此查询从Access转换为适当的SQL。 声明中的左和中功能让我有点困惑。
SELECT
name,
entnum
IIf(Left(Mid([entnum],4,3),1)=0,Mid([entnum],5,2),Mid([entnum],4,3)) as AGENCYCODE
FROM CUSTFILE
entnum字段的类型为varchar 15
任何帮助您尝试理解这一点都将非常感激。
答案 0 :(得分:3)
您可以将SUBSTRING
用于MID
和LEFT
。 SQL的某些方言中存在条件IIF
语句,但使用CASE
语句可能更安全。
观察你的陈述,我认为可以简化为以下内容:
SELECT
name,
entnum,
CASE
WHEN SUBSTRING(entnum,4,1) = '0' THEN SUBSTRING(entnum,5,2)
ELSE SUBSTRING(entnum,4,3)
END agencycode
FROM CUSTFILE
答案 1 :(得分:2)
请改为尝试:
SELECT
name,
entnum,
CASE
WHEN LEFT(SUBSTRING([entnum], 4, 3), 1) = '0'
THEN SUBSTRING([entnum], 5, 2)
ELSE SUBSTRING([entnum], 4, 3)
END as AGENCYCODE
FROM CUSTFILE
SUBSTRING
与MID
的用法完全相同。 CASE
语句允许您指定多个WHEN..THEN
条件以及ELSE
。