我目前正在尝试将此查询从 Access 转换为正确的 SQL。语句中的 Left 和 Mid 函数让我有点困惑。
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
任何试图理解这一点的帮助将不胜感激。
我目前正在尝试将此查询从 Access 转换为正确的 SQL。语句中的 Left 和 Mid 函数让我有点困惑。
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
任何试图理解这一点的帮助将不胜感激。
您可以使用SUBSTRINGforMID和LEFT。条件IIF语句存在于某些 SQL 方言中,但使用语句可能更安全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
试试这个:
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.