【问题标题】:ms access sql Check if string contains only valid charactersms access sql 检查字符串是否只包含有效字符
【发布时间】:2021-11-21 09:36:59
【问题描述】:

我有一个字段,一旦 B 出现,它的右侧不应有除 B 之外的任何其他字母/数字。 即有效值:0000BBBB 无效值:0000BAG0

到目前为止,我已经成功地从 B 的出现中提取了子串。但我不知道如何检查每个字符是否为 B。

下面是我目前写的查询:

IIF(
MID(Field, INSTR(Field, 'B'), LEN(Field)) NOT LIKE '*[B]*',
"FAIL",
"PASS"
)

但这会导致 0000BBBBA 的通过,这实际上是失败。

【问题讨论】:

  • 你能简单地使用 RIGHT 函数来查看字符串的最后一个字符吗?如果 b == 通过,如果不是 b == 失败?
  • 我的要求是检查每个字符是否为B。不仅在最后。
  • 嗯,你说的“一旦出现 B,就不应该有任何其他字母/数字”如此合乎逻辑,检查最后一个字符就可以满足你的要求,对吧?
  • 哦,对不起,我的错误,没有正确传达。在 B 之后,只有 B 应该来。
  • 啊,明白了。但是,无论字符串是“123456b”还是“bbbbbbb”,听起来字段中的最后一个字符只能是“B”——它们是有效的,而“1235ba”或“bbbbbbba”是无效的......对吗?

标签: sql ms-access ms-access-2007


【解决方案1】:

字符类[!B] 匹配除字母B 之外的任何字符。所以取你从Mid()得到的子串并检查它是否是Not Like '*[!B]*' --- IOW它是否包含除了B之外的任何字符。

SELECT
    t.Field,
    IIf(Mid(t.Field, InStr(t.Field, 'B')) Not Like '*[!B]*', 'PASS', 'FAIL')
FROM
FROM YourTable AS t

【讨论】:

  • 谢谢!我猜这是我想念的小东西..我很傻..非常感谢。
猜你喜欢
  • 2017-01-20
  • 2011-07-11
  • 2010-12-27
  • 2017-07-04
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 2011-11-09
  • 2013-05-18
相关资源
最近更新 更多