Microsoft access null

Microsoft access null DEFAULT

You can use the Nz function to return zero, a zero-length string (" "), or another specified value when a Variant is Null. For example, you can use this function to convert a Null value to another value and prevent it from propagating through an expression.


Nz(variant [, valueifnull ] )

The Nz function syntax has these arguments:




Required. A variable of data type Variant.


Optional (unless used in a query). A Variant that supplies a value to be returned if the variant argument is Null. This argument enables you to return a value other than zero or a zero-length string.

Note: If you use the Nz function in an expression in a query without using the valueifnull argument, the results will be a zero-length string in the fields that contain null values.

If the value of the variant argument is Null, the Nz function returns the number zero or a zero-length string (always returns a zero-length string when used in a query expression), depending on whether the context indicates the value should be a number or a string. If the optional valueifnull argument is included, then the Nz function will return the value specified by that argument if the variant argument is Null. When used in a query expression, the NZ function should always include the valueifnull argument,

If the value of variant isn't Null, then the Nz function returns the value of variant.


The Nz function is useful for expressions that may include Null values. To force an expression to evaluate to a non-Null value even when it contains a Null value, use the Nz function to return zero, a zero-length string, or a custom return value.

For example, the expression 2 + varX will always return a Null value when the Variant varX is Null. However, 2 + Nz(varX) returns 2.

You can often use the Nz function as an alternative to the IIf function. For example, in the following code, two expressions including the IIf function are necessary to return the desired result. The first expression including the IIf function is used to check the value of a variable and convert it to zero if it is Null.

In the next example, the Nz function provides the same functionality as the first expression, and the desired result is achieved in one step rather than two.

varResult = IIf(Nz(varFreight) > 50, "High", "Low")

If you supply a value for the optional argument valueifnull, that value will be returned when variant is Null. By including this optional argument, you may be able to avoid the use of an expression containing the IIf function. For example, the following expression uses the IIf function to return a string if the value of varFreight is Null.

In the next example, the optional argument supplied to the Nz function provides the string to be returned if varFreight is Null.

varResult = Nz(varFreight, "No Freight Charge")

Query examples



SELECT ProductID, NZ(Discount,"No Detail Available") AS Expr2 FROM ProductSales;

Returns "ProductID" in column Expr1, evaluates the 'Null' values in the field "Discount" and returns "No Details Available" for all Null values (returns the non-null values as is).

SELECT ProductID, NZ(Discount,"No Detail Available") AS ReplaceNull FROM ProductSales;

Returns "ProductID" in column Product, evaluates the 'Null' values in the field "Discount" and returns "No Details Available" for all Null values (returns the non-null values as is) and displays in column ReplaceNull.

VBA example

Note: Examples that follow demonstrate the use of this function in a Visual Basic for Applications (VBA) module. For more information about working with VBA, select Developer Reference in the drop-down list next to Search and enter one or more terms in the search box.

The following example evaluates a control on a form and returns one of two strings based on the control's value. If the value of the control is Null, the procedure uses the Nz function to convert a Null value to a zero-length string.


Defining Null Values:

A Null represents an unknown or a missing value. It is important to understand that a null value does not mean a zero of a text string of one or more blank spaces.

  • Zero (0) can have many different meanings. A zero can represent the balance of your bank account, the amount of a product in stock or the amount of art classes with spaces left on them.
  • A text string of one or more blank characters will mean absolutely nothing to most people, however it may be particularly useful to a query language such as SQL. In SQL a blank space is a valid character, as is a string of two blank spaces ('  '). They hold the same importance as a string of two letters ('XY'). In figure 1 shown below, a blank represents the fact that Warrington does not appear to be located in any County.
  • A zero-length string, two consecutive quotes & no space between (''), is also deemed an acceptable value to query languages such as SQL and can be meaningful in certain circumstances. You may have used databases containing an Employee table, and in this table along with FirstName and LastName fields you will also see a MiddleInitial field; this may often contain a zero-length string due to the fact that an Employee may not have a Middle Initial.
002Samual HelmsWalsallWest Midlands
004Henry ThomasSale 
005Tim LeeScarboroughNorth Yorkshire
006ElizabethHBrownWorthingWest Sussex

The Value of Nulls

When used for its stated purpose, null can be quite useful as shown in the Clients table in figure 1. The null values seen in the ClientMiddleInitial field and the ClientCounty field represent either missing or unknown values. In order to use a null correctly, you will need to understand why they occur:

Human error is commonly associated with the resultant missing values. An example of this may be seen if we consider the record for Henry Thomas in the above table. If you are entering the data for this record and you fail to ask the client for the County name they live in the data will then be considered missing and as such the record will be shown including a null. Once this error is realised however, you can then correct it by calling the client.

Unknown values can appear for a variety of reasons. An example of this may be that the value for a field has not yet been defined. On a student course database, there may be a Categories table that defines that type of courses available; you may add a new course to your list, but as yet there may not be a correct category defined that this course will fit in to. Another example of an unknown value is that it is truly unknown. If we refer back to the example concerning Henry Thomas contained in the Clients table; when entering the data for this record, you have asked him for the County that he lives in, he may not actually know the county name. If you also do not know the name of the county in question, then at this moment in time, the value is truly unknown. You can return to correct this problem when either of you determines the correct county name.

You may also have a case for a null value if you are working in a database and none of its values applies to a record. An example of this may be the Employees database and a table that contains an HourlyRate field and a Salary field. You may see null records here as the fact is the employee won't be paid a fixed salary and an hourly rate, therefore one will always be null.

You must also consider that there is a slim difference between "is not applicable" and "does not apply". In the previous example, "does not apply" is the correct definition as the value definitely can not apply to one or the other of the fields. As another example, suppose you are working in a database that includes a Patient table, and that the table includes a field relating to Hair Colour; if you are updating this and a patient recently lost all of their hair then the field will need to include "not applicable". You could use a Null value in this field, although it is recommendable to use a true value such as "N/A" or "Not Applicable", making information much clearer to the user.

Allowing Nulls in a table will depend on exactly how you are wishing to use the data.

Below deals with the negative elements of using Nulls within your database:

The Problem with Nulls

Including null values within your data can have an adverse effect when using this data within any mathematical operations. Any operation that includes a null value will result in a null; this being logical as if a value is unknown then the result of the operation will also be unknown. Below shows how using a null in a calculation will alter the outcome:

(100 x 3) + 10 = 310

(Null x 4) + 10 = Null

(20 x Null) + 100 = Null

(20 x 100) + Null = Null

Using the products table below, you can see the effects that including Nulls will have on any mathematical expressions you have used:

001Word 2002 BibleBooks 10 
002Access 2002 BibleBooks29.995149.95
00328" TFT JVC Television 995.00  
004Nokia 310 Mobile Phone 65.0010650.00
00514" Sanyo Portable TVAudio/Visual149.99  
006128mb Pen Drive 49.0015735.00

Notice how including nulls in a table will effect mathematical operations

You can see an example of the problem that null values cause when looking at certain records in this table. In this table, the StockValue field derives its results by using the Price and the QuantityInStock values, i.e. [Price]*[QtyInStock]. You can see that for the first record, ProductCode 001, that where a user has not entered a value for the Price field (i.e. a Null) then the StockValue also shows as Null.

This can lead to more severe problems as this may go undetected. Suppose you need to calculate the value of all items that you currently have In Stock; you will not receive an accurate result as values will not be taken into account.

To ensure that the Stock Value can always be calculated, you must first ensure that the Price and the QtyInStock fields can never contain a NULL value.

A further example of the effects of null values can be seen below:

Null values will also effect aggregate functions that incorporate the values of a given field. If we were using an aggregate function, for example a Count function, the result will always contain a null if the field contains a null. The table below shows the results of performing a summary calculation that will count the number of occurrences of a category in the Products table.

CategoryDescriptionTotal No. Of Occurrences

Null values will effect the results from an aggregate function

The Total No. Of Occurrences is the result of using the expression Count([CategoryDescription])

The table shows that there are "0" occurrences of the unspecified category, implying that each Product has been assigned to a category. This is clearly not the case, as viewing the Products table will show that there are two products that do not belong in any category at present.

Using all of this information, you should now be able to see that allowing missing or unknown values will have adverse effects on other things that you may wish to do with your data and should be considered when in the process of database design.

  1. Hell bunny review
  2. Cloud pun
  3. Suzuki df300 problems
  4. David friend wikipedia

Hi Jonathan,

If you don't want some records in a query, you can filter the query: Apply a filter to view select records in an Access database

If you farmilar with SQL, you can edit the query sting and add a criteria in your code, then run the query and it will get your data without the Null values.

If I misunderstand, can you share a sample of table with us?



Was this reply helpful?

Sorry this didn't help.

Great! Thanks for your feedback.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this reply?

Thanks for your feedback.

Firstly, there is no such thing as a NULL value.  NULL is the absence of a value.  As such it has no meaning, but is usually interpreted as 'unknown', 'not applicable' or similar.  The database relational model itself prohibits NULLs as it requires each column position in each tuple in a relvar to be a legitimate value of the attribute type represented by the column.  Very loosely speaking, a tuple is analogous to a row, and a relvar (relation variable) to a table, or more correctly to a table definition (tabledef).

In a real database, however, it is very difficult to avoid NULLs completely, and in most cases their use is harmless, though in others the semantic ambiguity of NULL can be problematical, so their use needs to be considered carefully in each case.  What would a NULL credit rating mean for instance? It could be interpreted as anything, e.g. as zero crdit or as unlimited credit.

Another thing to be aware of with NULLs, is that, by virtue of being the absence of a value, NULL propagates in arithmetical expressions.  The expression will always evaluate to NULL whatever the values of other operands might be.

In your case the use of NULLs is probably acceptable.  Unfortunately, you haven't given us any details of the table structure, but I suspect that you are 'encoding data as column headings' by having columns for each direction.  A fundamental principle of the database relational model is the Information Principle (Codd's Rule #1). This requires that all data be stored as values at column positions in rows in tables, and in no other way.  If I were designing such a table in my own line of work I'd probably do so something like this

….LinkID  (FK)
….TmeSlot  (FK)

NULLS are thus avoided as rows will only exist in the table where there is a TrafficCount value.  Note that this column should prohibit NULLs (Required property = TRUE) and have a DefaultValue property of zero.  The primary key of the table would be composite of the two foreign keys and the Direction column.

With a table which encodes the direction data as column headings, however, although this is an incorrect design, there should nevertheless be no trouble returning the ratios between the two directions, e.g..

    SUM(DirectionFrom) AS TotalFrom,
    SUM(DirectionTo)  AS TotalTo,
    SUM(DirectionFrom)/SUM(DirectionTo) AS RatioFromTo,
    SUM(DirectionTo)/SUM(DirectionFrom) AS RatioToFrom
FROM SurveyResults

To identify the links with a disparity of 7% or more in either direction:

FROM SurveyResults
HAVING SUM(DirectionFrom)/SUM(DirectionTo) > 1.07
OR SUM(DirectionTo)/SUM(DirectionFROM) > 1.07 ;

In the first query NULLs in either of the direction columns would propagate and cause the ratios to evaluate to NULL.  In the case second query these would cause the HAVING clause to evaluate to NULL (neither TRUE nor FALSE) for each of these rows, and they would consequently not be returned

BTW the fact that NULL is not a value does not preclude the Value property of an object being NULL of course.

Ken Sheridan,
Cannock, England

"Don't write it down until you understand it!" - Richard Feynman

Was this reply helpful?

Sorry this didn't help.

Great! Thanks for your feedback.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this reply?

Thanks for your feedback.

Hi Jonathan,

Have you checked Ken's reply? It's looks good to me.

Welcome to let us know if you need further support.



Was this reply helpful?

Sorry this didn't help.

Great! Thanks for your feedback.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this reply?

Thanks for your feedback.



How to Use Nz in Microsoft Access to Handle Null and Empty Values

Returns a Boolean value that indicates whether an expression contains no valid data (Null).



The required expressionargument is a Variant containing a numeric expression or string expression.


IsNull returns True if expression is Null; otherwise, IsNull returns False. If expression consists of more than one variable, Null in any constituent variable causes True to be returned for the entire expression.

The Null value indicates that the Variant contains no valid data. Null is not the same as Empty, which indicates that a variable has not yet been initialized. It is also not the same as a zero-length string (""), which is sometimes referred to as a null string.

Important:  Use the IsNull function to determine whether an expression contains a Null value. Expressions that you might expect to evaluate to True under some circumstances, such as If Var = Null and If Var <> Null, are always False. This is because any expression containing a Null is itself Null and, therefore, False.

Query examples



SELECT ProductID, isNull(Discount) AS Expr1 FROM ProductSales;

Returns values from the field "ProductID", evaluates if the values in the field "Discount" are Null, returns -1 (True) and 0 (False) in column Expr1.

SELECT ProductID, isNull(Discount) AS NullStatus FROM ProductSales;

Returns values from the field "ProductID", evaluates if the values in the field "Discount" are Null, returns -1 (True) and 0 (False) in column NullStatus.

VBA example

Note: Examples that follow demonstrate the use of this function in a Visual Basic for Applications (VBA) module. For more information about working with VBA, select Developer Reference in the drop-down list next to Search and enter one or more terms in the search box.

This example uses the IsNull function to determine if a variable contains a Null.


Null microsoft access

10 tricks for handling null values in Microsoft Access

This article is also available as a PDF download.

Where errors are concerned, null values are an equal-opportunity menace. If an unhandled null value doesn't generate a runtime error, it'll show up in erroneous data. Neither problem is your run of the mill "oops, there's a bug" error. In fact, an unhandled null value is the sign of a lazy or inexperienced developer. When null values are acceptable values, and they often are, you must handle them upfront and aggressively.

#1: Knowing null

You can't handle a value properly if you don't understand its nature. A common misconception is that a null value is simply an empty field or no value at all. That's not true. A null value indicates that the data is missing or unknown. Occasionally, a null value does mean that the data doesn't exist or isn't valid for that particular record, but the concepts aren't interchangeable.

#2: Dealing with null

Since Access allows null values, it's your job to determine whether you want to store them. Generally, the data will be your best guide. If the nature of the data requires that all data be present to save the record, you can handle null values at the table level. Simply set the field's Required property to Yes and bypass the problem. Be prepared for the rules to change.

Few applications are so tight that nulls aren't present. If users need the flexibility to create records without entering all of the data at the time they create the record, you have a choice. Allow the table to store a null value or use a default expression that stores an appropriate text message, such as "NA" or "Pending."

Unfortunately, this solution works only for text fields. For numeric fields, you could use a default value of 0, but that might cause trouble in the long run because functions handle Null and 0 differently (see #7). In addition, the Default property works only for new records. That means that you can't apply this solution to existing records. The truth is, it's usually easier to handle null values than it is to usurp them in this fashion.

#3: Not equating null

Don't try to find null values by equating them to anything else. The following expressions return an error, regardless of anything's value:

anything = Null anything <> Null

As far as Access is concerned, Null doesn't equal anything. You can't use the Equals operator (=) to find null values. Nor can you use the Inequality operator (<>) to exclude them. (This isn't always true outside Access.)

#4: Finding or excluding null values

Once you decide that null values are acceptable, it's your job to accommodate them throughout the application. To find or exclude null values, use Is Null and Not Is Null, respectively, in criteria expressions and SQL WHERE clauses. For instance, to find null values in a query, you'd enter Is Null in the appropriate field's Criteria cell. When building a WHERE clause, use Is Null and Not Is Null as follows:

WHERE source.field Is Null WHERE NOT(source.field) Is Null

Protect VBA expressions from errors by using IsNull()and Not IsNull().For instance, the use of IsNull() in the following If statement handles a potential runtime error when null values exist:

If Not IsNull(field) Then ...

Although Is Null and IsNull() have similar functions, they're not interchangeable.

#5: Working around null

Access won't always work with null values as you might expect. If you allow them, be prepared for surprises. For instance, a simple expression such as

GrandTotal = Subtotal + Shipping

becomes a problem if Shipping contains null values. Instead of returning just the Subtotal, as you might expect, the expression returns Null. That's because any equation that encounters a null value will always return Null. Although it's a nuisance, it makes sense. You can't evaluate an unknown value.

If your data contains null values, use the Nz() function to protect your expressions from this error. Specifically, Nz() returns a value other than Null when it encounters Null as follows:

GrandTotal = Subtotal + Nz(Shipping)

In this case, Nz() returns 0 when Shipping equals Null. Use Nz() in criteria and VBA expressions. Access projects don't support Nz(). Instead, use Transact SQL's IsNull function.

#6: Finding null values using

In # 3, you learned that Null doesn't equal anything. That's true, as long as you're using native functions and VBA. It isn't true if you're manipulating data via the ActiveX Data Object (ADO) library. For instance, the following statement executed against an ADO Recordset object returns an error:

rst.Find "FaxNumber Is Null"

That's because doesn't recognize the Is operator in this context. The library supports the Equals and Inequality operators when searching for or excluding null values. Fortunately, the correction is as simple as replacing the Is operator with the Equals operator:

rst.Find "FaxNumber = Null"

To exclude null values using , use the Inequality operator:

rst.Find "FaxNumber <> Null"

You'll find Access a bit of an oddball on this issue. Many libraries use the Equals and Inequality operators instead of Is. If a non-native library returns an error when working with null values, this switch will probably do the trick.

#7: Understanding the inconsistency of SQL aggregates

Not all aggregate functions consider null values. The good news is, there's a bit of reason to the inconsistency. An aggregate function that evaluates a field does not evaluate null values in its result. However, Count(), First(), and Last() do evaluate null values. It makes sense that they would--just because one field contains a null value doesn't negate the row's purpose within the context of the domain. For instance, Count(*) counts the total number of rows in a recordset even if some of those rows contain null values. If you want to exclude null values in a count, specify the field in the form Count(field). The result of both forms may or may not be the same. The point is, the field-specific form won't consider null values in its count.

#8: Including null values in a conditional search

When using a WHERE clause to find or restrict data, you must explicitly specify null values. Otherwise, Jet excludes the row from the results. This behavior is inherent in the equality issue discussed in #3. Because Null doesn't equal anything, it can't satisfy a condition other than Is Null. For instance, the simple expression

WHERE field < 5

will return all the records where field is less than 5--except for those records where field is Null. Now, that might be what you want, but it might not. If you want to include null values, include Is Null in the condition as follows:

WHERE field < 5 OR field Is Null

#9: Excluding null values in a group

Jet SQL's GROUP BY clause doesn't eliminate null values from the grouped results. Instead, Jet sorts null values to the top or the bottom of the result set, depending on the sort order. For instance, the following query includes records where the Region field is Null:

SELECT FirstName, LastName, Region FROM Employees GROUP BY Region

The result isn't right or wrong, it just might not be what you want. You must explicitly exclude null values. In this case, you'd add a HAVING clause as follows:

SELECT FirstName, LastName, Region FROM Employees GROUP BY Region HAVING Not (Region) Is Null

There's no specific method for explicitly excluding null values. The statement's purpose will dictate the solution.

#10: Using null to spot normalization problems

A null value is an acceptable value. However, too many null values often point to an unnormalized table. For instance, if you store customer phone and fax numbers, you might end up with a lot of empty fax number fields. (Even if you have no null values, your table's still not normalized properly, in this case.)

To normalize the phone data, you'd add a table that includes three fields: the foreign key column that relates the phone record to its corresponding customer, the phone number type, and the phone number. The phone number type would identify the phone number as an office, fax, home, cell, and so on. Then, you'd enter phone number records only when appropriate, eliminating null values. If the customer has no fax, there'd be no record for a fax number.

Conditional Formatting on a NULL Value in Microsoft Access - IsNull, Blank Entries, Missing Data

Index or primary key cannot contain a Null value (Error 3058)

Applies to: Access 2013 | Access 2016

Possible causes:

  • You tried to add a new record but did not enter a value in the field that contains the primary key.

  • You tried to add a Null value to a primary key field.

  • You executed a query that tried to put a Null value in a primary key field.

What is a primary key?

A primary key is a field or set of fields in your table that provide Microsoft Access with a unique identifier for every row. In a relational database, such as an Access database, you divide your information into separate, subject-based tables. You then use table relationships and primary keys to tell Access how to bring the information back together again. Access uses primary key fields to quickly associate data from multiple tables and combine that data in a meaningful way.

Often, a unique identification number, such as an ID number or a serial number or code, serves as a primary key in a table. For example, you might have a Customers table where each customer has a unique customer ID number. The customer ID field is the primary key.

An example of a poor choice for a primary key would be a name or address. Both contain information that might change over time.

Access ensures that every record has a value in the primary key field, and that the value is always unique.

What is a Null?

A Null is a value you can enter in a field or use in expressions or queries to indicate missing or unknown data. In Microsoft Visual Basic, the Null keyword indicates a Null value. Some fields, such as primary key fields, cannot contain Null.


To solve this problem, you must enter a value in the primary key field before moving to another record.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.


Now discussing:

MS Access: IsNull Function

totn Access Functions

This MSAccess tutorial explains how to use the Access IsNull function with syntax and examples.


The Microsoft Access IsNull function returns TRUE if the expression is a null value. Otherwise, it returns FALSE.


The syntax for the IsNull function in MS Access is:

IsNull ( expression )

Parameters or Arguments

A variant that contains a string or numeric value.


The IsNull function returns TRUE if the expression is a null value.
The IsNull function returns FALSE if the expression is not a null value.

Applies To

The IsNull function can be used in the following versions of Microsoft Access:

  • Access 2016, Access 2013, Access 2010, Access 2007, Access 2003, Access XP, Access 2000


Let's look at how to use the IsNull function in MS Access:

IsNull (null) Result: TRUE IsNull ("Tech on the Net") Result: FALSE

Example in VBA Code

The IsNull function can be used in VBA code in Microsoft Access.

For example:

Dim LValue As Boolean LValue = IsNull("Tech on the Net")

In this example, the variable called LValue would contain FALSE as a value.

Example in SQL/Queries

You can also use the IsNull function in a query in Microsoft Access.

For example:

Microsoft Access

In this query, we have used the IsNull function as follows:

Expr1: IsNull([Description])

This query will evaluate whether the Description field contains a null value and display the results in a column called Expr1. You can replace Expr1 with a column name that is more meaningful.

For example:

NullDescription: IsNull([Description])

The results would now be displayed in a column called NullDescription.


8834 8835 8836 8837 8838