新计算列基于删除另一列

时间:2018-04-29 07:20:57

标签: ms-access

我在表格中有一个包含人名的列。我想创建一个计算列,删除给定人名中的所有空格,然后取名字的前四个字符。

请参阅随附的屏幕截图以获取插图。 A列包含人名。通过使用Left函数,我设法最终得到的是B列(这是不正确的)。如您所见,它将空格包含为四个字符之一。我想要的是C列。

MS Access Question Example

当我尝试使用Replace函数创建计算列以将“”替换为“”时,MS Access会抛出一个错误,指出该表达式无法在计算列中使用。因此,我无法将Replace函数与Left函数结合使用。

需要帮助。非常感谢!

2 个答案:

答案 0 :(得分:1)

André和Tim是对的:使用类似于Tim的查询和表达式:

Select *, Left(Replace([Name], " ", ""), 4) As Name4
From YourTable

答案 1 :(得分:1)

我觉得这只是你要用这些名字完成的一部分(也许是XY-Problem 2)。例如,对于具有相同缩写的多名员工,您打算做什么?

...总之

正确的方式(通过查询)

SELECT Left(Replace([Name]," ",""),4) AS NewName FROM Table1;

img

你想怎么做(通过计算字段)

我花了20多分钟尝试各种方法让它在计算表字段中工作(以提供替代的,但不推荐的解决方案),然后放弃。由于各种原因,我找不到任何内置函数的组合,因为各种函数在计算字段中只是不可用

  

“计算字段属于查询,而非表格。”

     

- Quote from Allen Brown,Microsoft MVP “”Excel Guru。

  • <{3}}的一部分标题为 “您想要存储计算结果吗?” <登记/> (...但是,如果你以后后悔,不要再向我们哭泣!)

  • 您不是第一个决定在Access表中使用计算字段的人 this page来自那些认为这是一个糟糕想法的人。

(我听说有传言称微软计划在下一版Access中从表Calculated下拉列表中删除Data Type。)