Select 使用 iif 访问查询的值

Select a value using iif access query

我有一行包含这个值:

account :
adm.ahrgrst001
adm.ns2dhdujhd
adm.ff2hdjhh
adm.haidhidh103
adm.hshiksh122
adm.cn3ehuioe

我想提取两个不同的值: 当它像 adm.hshiksh122 这样结束时,我想提取 hshikshadm.cn3ehuioe 开始,我想要 ehuioe 开头都没有 adm.

我想过

IIF(isnumeric(RIGHT (account,3)),LEFT(account,LEN(account)-4),RIGHT (account,LEN(account)-7))

adm.cn3ehuioe的值我错了像adm.cn3ehui adm.ahrgrst001 是正确的 ahrgrst

感谢所有阅读的人

获取这两种类型值的正确方法是:

account LIKE 'adm.[!0-9][!0-9]#[!0-9]*'

对于点后有2个字母,1个数字和字母的值,并且:

account LIKE 'adm.*###'

对于以 3 位数字结尾的值。

所以使用这个:

SELECT IIF(
  account LIKE 'adm.*###' ,
  MID(account, 5, LEN(account) - 7),
  MID(account, 8)
) AS result
FROM tablename
WHERE account LIKE 'adm.*###' OR account LIKE 'adm.[!0-9][!0-9]#[!0-9]*'

如果除了这两种类型没有其他值,那么您可以删除 WHERE 子句。

您的示例数据的结果:

result
ahrgrst
dhdujhd
hdjhh
haidhidh
hshiksh
ehuioe