我目前正在尝试将此查询从 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
任何试图理解这一点的帮助将不胜感激。
您可以使用SUBSTRING
forMID
和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
.