【问题标题】:Conditional update query to pad alphanumeric values in MS Access在 MS Access 中填充字母数字值的条件更新查询
【发布时间】:2020-07-18 01:10:15
【问题描述】:

我有一个 Access 表,其中的字段包含字母数字值(1234、123A、12A34、ABC3 等)。我正在尝试创建一个条件更新查询来添加前导零,以使所有包含至少 1 个字母的值最多五个字符,但唯一的数值(例如 123、00A12、0000X)没有。

我当前的代码如下所示: UPDATE MyTable SET MyTable!Field = Format(Field, String(5, "0")) WHERE MyTable!Field LIKE '*[A-Z]*'

当我运行查询时,我没有收到任何错误消息,但它也未能添加任何前导零。

我也试过Format(Field, "00000") 使用Not Like'*[0-9]*''*[0123456789]*' 等。

有趣的是,当我自己运行查询以选择任何包含字母 (Like '*[A-Z]*') 的值时,它会正确提取所有需要更新的 1000 个值,但是当我添加条件时,它会失败。同样,我过去曾成功地使用Format(Field), String(5, "0") 在整个字段中添加前导零,但当我添加条件时它也失败了。

我对 Access 和 SQL 还很陌生,所以我觉得我可能在某个地方误解了语法。或者还有什么我应该做的吗?

【问题讨论】:

  • Format(Field), String(5, "0") 不是有效的结构。它不能为前导零添加前缀。一定是您在帖子中键入此表达式的方式有误。

标签: sql ms-access sql-update


【解决方案1】:

Format() 使用了错误的函数。

如果字段中的每个值都不超过 5 个字符,请考虑:

UPDATE MyTable SET Field = String(5-Len(Field), "0")) & Field WHERE Not IsNumeric(Nz(Field,0))

【讨论】:

  • 这确实有效,但是,它为我的所有值添加了零,我试图将它们添加到字母数字中(因此将 123 保留为 123,但将 123A 更新为 00123A)。
  • 对不起,这确实有效。当我第一次尝试时,我错过了输入我的字段名称。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
相关资源
最近更新 更多