【问题标题】:Assign a value if the field is not null如果字段不为空,则赋值
【发布时间】:2019-08-05 15:41:59
【问题描述】:

我正在开发一个关于 MS Access 的 SQL 项目。 我想知道是否有一种方法可以在每次字段不为空时分配相同的值。我知道有一个相反的 Nz() 函数,但我不知道其他函数。 另外,我想在每次字段为 NULL 时设置一个不同的值

我的桌子是这样的。

date


MARCH17
JUNE18

JULY19

我想得到这样的东西。

date
1
2
PRESENT
PRESENT
5
PRESENT

如果我必须创建另一个列,那也很好。

提前致谢!

【问题讨论】:

  • 更难的问题是当字段为空时赋值。

标签: sql ms-access null field


【解决方案1】:

您需要将新信息放在新列中,否则,如果您多次运行查询,您将得到 PRESENT 的所有内容,因为第一个查询将 NULL date 替换为序列号。

如果您有 id 列,您可以使用:

UPDATE table SET new_column = (SELECT IIF(date IS NULL, id,'PRESENT'))

如果您没有id 列(强烈推荐),那么您需要生成一个序列号。

【讨论】:

  • 感谢您的回答。我试图在我的表的设计视图中创建一个自动增量字段,但是当我这样做时,我收到以下错误“超出文件共享锁定计数...”你知道如何继续创建我的主键吗?
【解决方案2】:

您的表有主键吗?然后你想计算主键小于这个的所有空值给你你的数字,然后把它放在不为空的地方。所以(假设你的字段是F1,主键叫PK)下面的计算字段

=IIf(ISNULL([F1]),DCOUNT("[PK]","MYTABLE","[PK]

【讨论】:

  • 不,很遗憾,没有主键,当我尝试创建主键时,出现错误
【解决方案3】:

你可以使用:

UPDATE 
    YourTable 
SET 
    [date] = IIf([date] Is Null, 
        (Select Count(*) + 1 From YourTable As T Where T.[date] <> 'PRESENT'),
        'PRESENT'))
WHERE 
    [date] <> 'PRESENT'

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2018-05-03
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多