fhg
Volume 8, Number 33 -- October 1, 2008

Simulate a Boolean Data Type in a Database Table

Published: October 1, 2008

Hey, Mike:

I want to create a column in an SQL table and only allow two values. They could be 1 or 0, Y or N, or whatever. I don't want the database to allow any other values into the column. I want the default to be the "false" value. How would you define such a column in SQL? I understand that Oracle supports a BOOLEAN data type, but I don't think such exists on the AS/400.

--Guru Reader


You are correct, SQL Server has the BIT data type and Oracle has the BOOLEAN data type but there is no equivalent data type in DB2 for i. However, you can use a CHECK constraint to simulate a BOOLEAN type. Here's an example:

Create Table TestBoolean
  (Bool Numeric(1,0) Not Null Default 0 
  Constraint BoolCheck Check (Bool In (0,1)))

In this case, the CHECK constraint mandates the value of column Bool to contain a 0 or 1 (identical to the behavior of SQL Server's BIT data type). Of course DEFAULT will give your column a default value of 0 if one isn't explicitly given. Keep in mind that a constraint name must be unique within a schema. Therefore you won't be able to specify BoolCheck as a constraint name on more than one table within the same schema (library).

You can also emulate a BOOLEAN value with a character field that contains the values 'Y' and 'N', such as:

Create Table TestBoolean
  (Bool Char(1) CCSID 37 Not Null Default 'N'
  Constraint BoolCheck Check (Bool In ('Y', 'N')))

Now, when you insert or update a value into this column that is not allowed by the check constraint you get the following error:

SQL0545 INSERT or UPDATE not allowed by CHECK constraint.

If you have multiple fields with the same CHECK requirements, you can implement the validation for all three columns within one constraint:

Create Table TestBoolean
  (Bool1 Numeric(1,0) Not Null Default 0, 
   Bool2 Numeric(1,0) Not Null Default 0, 
   Bool3 Numeric(1,0) Not Null Default 0, 
  Constraint CheckFlags Check(Bool1 In (1,0) And
                      Bool2 In (1,0) And Bool3 In (1,0)))

Of course you can vary this example to allow NULLs if required.

Finally, for compatibility with other database servers, one other possible variation is to create a distinct type called BIT. (You can't use the name BOOLEAN because it is an SQL reserved keyword--maybe IBM intends to give us a BOOLEAN data type in the future.) However, when implementing the distinct type you will still need to specify the CHECK constraint at the table level to enforce the allowed values. Also, distinct types require more processing overhead. See the documentation for the CREATE TYPE command for more info.

--Mike

Michael Sansoterra is a programmer/analyst for i3 Business Solutions, an IT services firm based in Grand Rapids, Michigan. Send your questions or comments for Michael to Ted Holt via the IT Jungle Contact page.




                     Post this story to del.icio.us
               Post this story to Digg
    Post this story to Slashdot


Sponsored By
SYSTEM i DEVELOPER

Take it to the Summit!

Come to the RPG & DB2 Summit in Las Vegas, October 20-22, for three full days of intense education focused on RPG IV, ILE, SQL, DB2, V6R1, WDSC/RSE/RDi & more.

Learn the latest in practical, usable tips and techniques from top gurus Susan Gantner, Skip Marchesani, Jon Paris, Paul Tuohy, Scott Klement and others in a highly interactive, fun, invigorating environment. You'll leave the Summit re-energized and eager to use all your new skills and ideas.

Register today and save $100 - $1295 registration ends October 3.


Senior Technical Editor: Ted Holt
Technical Editor: Joe Hertvik
Contributing Technical Editors: Edwin Earley, Brian Kelly, Michael Sansoterra
Publisher and Advertising Director: Jenny Thomas
Advertising Sales Representative: Kim Reed
Contact the Editors: To contact anyone on the IT Jungle Team
Go to our contacts page and send us a message.

Sponsored Links

MoshiMoshi:  Episode Three now showing! Watch and Win!
COMMON:  Join us at the Focus 2008 workshop conference, October 5 - 8, in San Francisco, California
Vision Solutions:  A $20 gas card for completing a short i5/OS DR survey


 

IT Jungle Store Top Book Picks

Easy Steps to Internet Programming for AS/400, iSeries, and System i: List Price, $49.95
Getting Started with PHP for i5/OS: List Price, $59.95
The System i RPG & RPG IV Tutorial and Lab Exercises: List Price, $59.95
The System i Pocket RPG & RPG IV Guide: List Price, $69.95
The iSeries Pocket Database Guide: List Price, $59.00
The iSeries Pocket Developers' Guide: List Price, $59.00
The iSeries Pocket SQL Guide: List Price, $59.00
The iSeries Pocket Query Guide: List Price, $49.00
The iSeries Pocket WebFacing Primer: List Price, $39.00
Migrating to WebSphere Express for iSeries: List Price, $49.00
iSeries Express Web Implementer's Guide: List Price, $59.00
Getting Started with WebSphere Development Studio for iSeries: List Price, $79.95
Getting Started With WebSphere Development Studio Client for iSeries: List Price, $89.00
Getting Started with WebSphere Express for iSeries: List Price, $49.00
WebFacing Application Design and Development Guide: List Price, $55.00
Can the AS/400 Survive IBM?: List Price, $49.00
The All-Everything Machine: List Price, $29.95
Chip Wars: List Price, $29.95


 
The Four Hundred
IBS Picks Windows Instead of i as Strategic ERP Platform

The Power Systems i 570 Versus Its Predecessors

New ASNA President Takes On Modernization Business with Services Emphasis

As I See It: Insult to Injury

BCD Adds New Partners in Europe and California

The Linux Beacon
Why Blade Servers Still Don't Cut It, and How They Might

Intel Keeps Both Arms Swinging with Xeons, Jabs with Itanium

Microsoft Ponies Up Another $100 Million for Novell Linux

Mad Dog 21/21: Newtonian Economics

Two More Xeon-Based Galaxy Servers from Sun

Four Hundred Stuff
Purge Your JDE System to Higher Health with Essentio's Archivist

Help/Systems Gives Robot/CONSOLE the GUI

Farmers Achieve Fine-Grain Control with RSP from ProData

Oracle Updates JD Edwards EnterpriseOne, World

Infor Upgrades XA with Query, Inventory Enhancements

Big Iron
For Some Customers, the Mainframe Is Green

Top Mainframe Stories From Around the Web

Chats, Webinars, Seminars, Shows, and Other Happenings

System i PTF Guide
September 20, 2008: Volume 10, Number 38

September 14, 2008: Volume 10, Number 37

September 7, 2008: Volume 10, Number 36

August 30, 2008: Volume 10, Number 35

August 23, 2008: Volume 10, Number 34

August 16, 2008: Volume 10, Number 33

The Windows Observer
Citrix Addresses Performance with XenApp 5

Server Buyers Shop Like It's 1999 in the Second Quarter

Intel Keeps Both Arms Swinging with Xeons, Jabs with Itanium

Mad Dog 21/21: Newtonian Economics

Microsoft Does Something About Those SQL Injection Attacks

The Unix Guardian
What the Heck Is the Midrange, Anyway?

Overseas and Notebook Sales Offset Printer Declines for HP in Q3

Two More Xeon-Based Galaxy Servers from Sun

Mad Dog 21/21: Newtonian Economics

Intel's Nehalems to Star at IDF, AMD Pitches Shanghai

Four Hundred Monitor
Four Hundred Monitor's
Full iSeries Events Calendar

THIS ISSUE SPONSORED BY:

WorksRight Software
System i Developer
Bug Busters Software Engineering


Printer Friendly Version


TABLE OF CONTENTS
Keep Your Hands on the Keyboard with RSE

Simulate a Boolean Data Type in a Database Table

Admin Alert: When System Job Tables Attack, Part II

Four Hundred Guru

BACK ISSUES

From the IT Jungle Forums
Data Queues vs. MQ Series: Performance

Removing blanks from a CL Variable

XML

SQL "Hidden" Field

Java Messages

MQ Help Desired





 
Subscription Information:
You can unsubscribe, change your email address, or sign up for any of IT Jungle's free e-newsletters through our Web site at http://www.itjungle.com/sub/subscribe.html.

Copyright © 1996-2008 Guild Companies, Inc. All Rights Reserved.
Guild Companies, Inc., 50 Park Terrace East, Suite 8F, New York, NY 10034

Privacy Statement