TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL...

344
SAS ® 9.2 Table Server TSSQL Language Reference

Transcript of TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL...

Page 1: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

SAS ® 9.2 Table Server TSSQL Language Reference

Page 2: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

The correct bibliographic citation for this manual is as follows: SAS Institute Inc. 2009.SAS ® 9.2 Table Server: TSSQL Language Reference. Cary, NC: SAS Institute Inc.

SAS® 9.2 Table Server: TSSQL Language ReferenceCopyright © 2009, SAS Institute Inc., Cary, NC, USAISBN 978-1-59047-982-7All rights reserved. Produced in the United States of America.For a hard-copy book: No part of this publication may be reproduced, stored in aretrieval system, or transmitted, in any form or by any means, electronic, mechanical,photocopying, or otherwise, without the prior written permission of the publisher, SASInstitute Inc.For a Web download or e-book: Your use of this publication shall be governed by theterms established by the vendor at the time you acquire this publication.U.S. Government Restricted Rights Notice. Use, duplication, or disclosure of thissoftware and related documentation by the U.S. government is subject to the Agreementwith SAS Institute and the restrictions set forth in FAR 52.227-19 Commercial ComputerSoftware-Restricted Rights (June 1987).SAS Institute Inc., SAS Campus Drive, Cary, North Carolina 27513.1st electronic book, February 2009

1st printing, March 2009SAS® Publishing provides a complete selection of books and electronic products to helpcustomers use SAS software to its fullest potential. For more information about oure-books, e-learning products, CDs, and hard-copy books, visit the SAS Publishing Web siteat support.sas.com/publishing or call 1-800-727-3228.SAS® and all other SAS Institute Inc. product or service names are registered trademarksor trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USAregistration.Other brand and product names are registered trademarks or trademarks of theirrespective companies.

Page 3: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

Contents

P A R T 1 Introduction 1

Chapter 1 � Using This Language Reference 3Purpose 3

Intended Audience 3

Chapter 2 � Conventions 5Typographical Conventions 5

Syntax Conventions 5

P A R T 2 TSSQL Language Reference 7

Chapter 3 � TSSQL Language Concepts 9Introduction to the TSSQL Language 10

Data Types 10

Identifiers 11

How TSSQL Processes Nulls and SAS Missing Values 12

Type Conversions 16

TSSQL Expressions 20

Dates and Times in TSSQL 22

DICTIONARY Tables 27

TSSQL Pass-Through Facility 28

TSSQL Reserved Words 28

Chapter 4 � TSSQL Formats 33Overview of Formats 35

General Format Syntax 35

Validation of TSSQL Formats 37

Format Categories 37

TSSQL Format Examples 37

Formats Documented in Other SAS Publications 38

Dictionary 40

Chapter 5 � TSSQL Functions 131Overview of TSSQL Functions 132

Aggregate Functions 135

Function Categories 136

Dictionary 136

Chapter 6 � TSSQL Expressions and Predicates 201Overview of Expressions and Predicates 201

Dictionary 202

Page 4: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

iv

Chapter 7 � TSSQL Informats 221Definition of an Informat 221

General Informat Syntax 221

How Informats Are Used in TSSQL 222

How to Specify Informats in TSSQL 223

Validation of TSSQL Informats 223

TSSQL Informat Examples 224

Chapter 8 � TSSQL Statements 225Overview of Statements 225

Dictionary 226

Chapter 9 � TSSQL Statement Table Options 283Overview of Statement Table Options 283

Syntax 284

Using TSSQL Statement Table Options 284

Dictionary 285

P A R T 3 Appendixes 305

Appendix 1 � TSSQL and the ANSI Standard 307Compliance 307

TSSQL Enhancements 307

TSSQL Limitations 310

Appendix 2 � Tables Used in Examples 311DENSITIES 311

WORLDTEMPS 311

WORLDCITYCOORDS 312

AFEWWORDS 313

CUSTONLINE 313

Appendix 3 � DICTIONARY Table Descriptions 315DICTIONARY.CATALOGS 315

DICTIONARY.COLUMNS 315

DICTIONARY.COLUMN_STATISTICS 320

DICTIONARY.STATISTICS 321

DICTIONARY.TABLES 326

Appendix 4 � ICU License 329ICU License - ICU 1.8.1 and later 329

Appendix 5 � Recommended Reading 331Recommended Reading 331

Index 333

Page 5: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

1

P A R T1

Introduction

Chapter 1. . . . . . . . . .Using This Language Reference 3

Chapter 2. . . . . . . . . .Conventions 5

Page 6: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

2

Page 7: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

3

C H A P T E R

1Using This Language Reference

Purpose 3Intended Audience 3

PurposeThe SAS Table Server: TSSQL Language Reference provides the following

information for the Table Server Structured Query Language (TSSQL).� Conceptual information about the TSSQL language� Detailed reference information for the major language elements:

� Formats� Functions� Expressions, Operators, and Predicates� Statements� Table Options

Intended AudienceThe information in this document is intended for the following users who perform in

these roles:� Application developers who write the client applications need an understanding of

the SAS Table Server languages. They write applications that create tables, bulkload tables, manipulate tables, and query data.

� Database administrators who design and implement the client/server environment.They administer the data by designing the databases and setting up the datasource metadata; that is, database administrators build the data model.

� SAS programmers who write and submit Base SAS code such as SAS proceduresand the SAS DATA step language and now want to take advantage of the SASTable Server.

Page 8: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

4

Page 9: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

5

C H A P T E R

2Conventions

Typographical Conventions 5Syntax Conventions 5

Typographical Conventions

Type styles have special meanings when used in the documentation of the SAS TableServer software syntax. The following list explains the style conventions for the syntaxsections.

UPPERCASEBOLD

identifies SAS keywords such the names of statements and functions(for example, CREATE TABLE).

UPPERCASEROMAN

identifies arguments and values that are literals (for example,FROM).

italic identifies arguments or values that you supply. Items in italic canrepresent user-supplied values that are either one of the following.

� nonliteral values assigned to an argument (for example,END=variable).

� nonliteral arguments (for example, AS alias).

If more than one of an item in italics can be used, the items areexpressed as item [, …item].

monospace identifies examples of SAS code.

Syntax Conventions

The SAS Table Server: TSSQL Language Reference uses the Backus-Naur Form(BNF), specifically the same syntax notation used by Jim Melton in SQL:1999Understanding Relational Language Components.

The main difference between traditional SAS syntax and the syntax used in the SASTable Server TSSQL Language Reference documentation is in how optional syntaxarguments are displayed. In the traditional SAS syntax, angle brackets (< >) are used todenote optional syntax. In the SAS Table Server syntax, square brackets ([ ])are used todenote optional syntax and angle brackets are used to denote non-terminal components.

The following symbols are used in the SAS Table Server syntax.

::= This symbol can be interpreted as “consists of” or “is defined as”.

Page 10: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

6 Syntax Conventions � Chapter 2

< > Angle brackets identify a non-terminal component , that is a syntaxcomponent that can be further resolved into lower level syntaxgrammar.

[ ] Square brackets identify optional arguments. Any argument that isnot enclosed in square brackets is a required argument. Do not typethe square brackets unless they are preceded by a backward slash(\) which denotes that they are literal.

{ } Curly braces provide a method to distinguish required multi-wordarguments. Do not type the curly braces unless they are preceded bya backward slash (\) which denotes that they are literal.

| A vertical bar indicates that you can choose one value from a group.Values separated by bars are mutually exclusive.

… An ellipsis indicates that the argument or group of arguments thatfollow the ellipsis can be repeated any number of times. If theellipsis and the following arguments are enclosed in squarebrackets, they are optional.

\ A backward slash indicates that next character is a literal.

The following examples illustrate the syntax conventions that are described in thissection. These examples contain selected syntax elements, not the complete syntax.

u CREATE TABLE v {table | _NULL_ }w [\{OPTIONS SAS-table-option=value [… SAS-table-option=value]\}](x <column–definition> y [, …<column–definition> | <table-constraint>])U | V AS subquery-expression

;

<column-definition>::=column data-type [<column–constraint>] [DEFAULT value ][HAVING [FORMAT format] [INFORMAT informat] [LABEL=’label’]]

u CREATE TABLE is in uppercase bold because it is the name of the statement.v table is italics because it is an argument that you can supply.w The curly braces are preceded by a backward slash indicating that the curly

braces are literal.x <column–definition> is in angle brackets because it is a non-terminal argument

that is further resolved into lower level syntax grammar.y The square brackets and ellipsis around the second instance of

<column-definition> indicates that it is optional and you can repeat this argument anynumber of times separated by commas.

U You can supply a <column-definition> or AS subquery-expression but not both.V AS is in uppercase roman because it is a literal argument.

Page 11: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

7

P A R T2

TSSQL Language Reference

Chapter 3. . . . . . . . . .TSSQL Language Concepts 9

Chapter 4. . . . . . . . . .TSSQL Formats 33

Chapter 5. . . . . . . . . .TSSQL Functions 131

Chapter 6. . . . . . . . . .TSSQL Expressions and Predicates 201

Chapter 7. . . . . . . . . .TSSQL Informats 221

Chapter 8. . . . . . . . . .TSSQL Statements 225

Chapter 9. . . . . . . . . .TSSQL Statement Table Options 283

Page 12: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

8

Page 13: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

9

C H A P T E R

3TSSQL Language Concepts

Introduction to the TSSQL Language 10Data Types 10

Identifiers 11

Overview of Identifiers 11

Regular Identifiers 11

Delimited Identifiers 12Support for Non-Latin Characters 12

How TSSQL Processes Nulls and SAS Missing Values 12

TSSQL Modes for Nonexistent Data 12

Differences Between Processing Null Values and SAS Missing Values 13

Reading and Writing Nonexistent Data in ANSI Mode 14

Reading and Writing Nonexistent Data in SAS Mode 15Testing and Modifying Nulls and SAS Missing Values 16

Type Conversions 16

Type Conversion Definitions 16

Overview of Type Conversions 17

Type Conversion for Unary Expressions 18Type Conversion for Logical Expressions 18

Type Conversion for Arithmetic Expressions 18

Type Conversion for Relational Expressions 19

Type Conversion for Concatenation Expressions 19

TSSQL Expressions 20Query Expressions and Subqueries 20

Overview of Query Expressions 20

Overview of Subqueries 20

Correlated Subqueries 21

TSSQL Value Expressions 21

Numeric Value Expressions 21Row Value Expressions 21

Dates and Times in TSSQL 22

Overview of Dates and Times in TSSQL 22

TSSQL Date, Time, and Datetime Constants 22

Using Dates and Times in SAS Data Sets and SPD Data Sets, the SPDC File Format 23Date, Time, and Datetime Functions 24

Date, Time, and Datetime Formats for SAS and SPD Data Sets, the SPDC File Format 25

DICTIONARY Tables 27

TSSQL Pass-Through Facility 28

TSSQL Reserved Words 28

Page 14: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

10 Introduction to the TSSQL Language � Chapter 3

Introduction to the TSSQL LanguageTable Server SQL (TSSQL) is the SAS implementation of SQL used by the SAS Table

Server to access relational databases. TSSQL provides a subset of the ANSI SQLstandard SQL:1999 core compliant syntax as well as extra extensions.

For applications, TSSQL provides a common SQL syntax across all data sources.That is, TSSQL is a vendor-neutral SQL dialect that accesses data from various datasources without having to submit queries in the SQL dialect that is specific to the datasource. In addition, a single TSSQL query can target data in several data sources andreturn a single result table. When possible, TSSQL queries are optimized withmulti-threaded algorithms in order to resolve large-scale operations.

A client application uses an industry standard JDBC, ODBC, and OLE DBapplication programming interface (API) to access the SAS Table Server. The Base SASlanguage interface to the SAS Table Server uses the Table Server LIBNAME engineand the TSSQL procedure.

Using the SAS Table Server, TSSQL can access the following relational databases:DB2 for UNIX and PC operating environments, MySQL, ODBC, Oracle, Teradata, SASdata sets, and SAS SPD data sets.

See the SAS Table Server Administrator’s Guide for complete information about theSAS Table Server and data sources. For information about SQL:1999 core compliantsyntax and SAS extensions, see Appendix 1, “TSSQL and the ANSI Standard,” on page307.

Data TypesA data type is an attribute of every column in a table that specifies what type of data

the column will store. The data type is the characteristic of a piece of data that says,for example, it is a character string, an integer, a floating-point number, or a date ortime. The data type also tells the operating system how much physical storage to setaside for the column.

The following list contains the data types that are supported by the SAS TableServer but not all data types are available for storage on each data source.

BIGINTCHAR(n)DATEDOUBLEFLOAT(p)IDENTITYINTEGERNCHAR(n)NVARCHAR(n)REALSMALLINTTIME(p)TIMESTAMP(p)TINYINTVARBINARY(n)VARCHAR(n)

Page 15: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � Regular Identifiers 11

When defining a data type, you must use the SQL data type keywords for either thedata types supported by TSSQL or the data types supported by the target databaseSQL language. That is,

� If you submit TSSQL statements, use the SAS Table Server data type keywords.� If you request an SQL pass-through and submit SQL statements using the SQL

language that is implemented by the specific data source, use the data type namesfor the target database. For information on how to define data types using the SQLlanguage for a specific data source, see the documentation for that data source.

For complete information about data types, see “Overview of Data Types” in the SASTable Server Administrator’s Guide.

Identifiers

Overview of IdentifiersAn identifier is one or more tokens, or symbols, that name programming language

entities, such as variables, method names, package names, and arrays, as well as datasource objects, such as table names and column names.

The SAS Table Server languages, TSPL and TSSQL, support ANSI SQL:1999standards for both regular and delimited identifiers.

Regular identifiers are the type of identifiers that you see in most programminglanguages. They are not case-sensitive so that the identifier “Name” is the same as“NAME” and “name”. Only certain characters are allowed in regular identifiers.

Delimited identifiers are case-sensitive, allow any character, and must be enclosed indouble quotation marks.

By supporting ANSI SQL:1999 identifiers, the SAS Table Server languages arecompatible with data sources that also support the ANSI SQL:1999 identifiers.

Note: Identifiers for SAS and SPD data sets are limited to 32 characters. �

Regular IdentifiersWhen you name regular identifiers, use these rules:� The length of a regular identifier can be 1 to 256 characters.� The first character of a regular identifier must be a letter. Subsequent characters

can be letters, digits, or underscores.� Regular identifiers are case-insensitive.

The following are valid regular identifiers:

firstNamelastNamephone_num1phone_num2

Letters in regular identifiers are stored internally as uppercase letters, which allowsletters to be written in any case. For example, phone_num1 is the same asPhone_Num1 and PHONE_NUM1.

Note: Each data source has its own naming conventions, all of which are supportedby the SAS Table Server languages. When your program contains identifiers specific fora particular data source, you must follow the naming conventions for that data source.

Page 16: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

12 Delimited Identifiers � Chapter 3

For information about table naming conventions for data source objects, see the datasource reference section in SAS Table Server Administrator’s Guide. �

Delimited IdentifiersWhen you name delimited identifiers, follow these rules:

� The length of a delimited identifier can be 1 to 256 characters.

� Begin and end delimited identifiers with double quotation marks.

� Delimited identifiers consist of any sequence of characters, including spaces andspecial characters, between the beginning and ending double quotation marks

� Delimited identifiers are case-sensitive.

A string of characters enclosed by double quotation marks is interpreted as anidentifier and not as a character constant. Character constants can be enclosed only bysingle quotation marks.

The following is a list of valid delimited identifiers:

" x y z""1""phone_num""a & B"

Letters in delimited identifiers are case-sensitive and their case is preserved whenthey are stored in the SAS Table Server languages. When they are stored, the doublequotation marks are removed. The identifier “phone_num” is not equivalent to“Phone_Num” or “PHONE_NUM”. The delimited identifier “PHONE_NUM” isequivalent to the regular identifier “phone_num”.

You can use delimited identifiers for terms that might otherwise be a reserved word.For example, to use the term “char” other than for a character declaration, you woulduse it as the delimited identifier “char”.

Note: Each data source has its own naming conventions, all of which are supportedby the SAS Table Server languages. When your program contains identifiers specific fora particular data source, you must follow the naming conventions for that data source.

For information about table naming conventions for data source objects, see the datasource reference section in SAS Table Server Administrator’s Guide. �

Support for Non-Latin CharactersThe SAS Table Server languages support non-Latin characters only in unquoted

identifiers. Only Latin characters can be used in delimited identifiers.

How TSSQL Processes Nulls and SAS Missing Values

TSSQL Modes for Nonexistent DataNonexistent data is represented by a SAS missing value in SAS data sets and the

SPDC file format in SPD data sets (SPDC file formats). For all other data sources,nonexistent data is represented by an ANSI SQL null value. The SAS missing valueindicators, . , ._, .A - .Z, and ’ ’ are known values that indicate nonexistent data. Table

Page 17: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � Differences Between Processing Null Values and SAS Missing Values 13

data with an ANSI null has no real data value, it is metadata that indicates anunknown value.

Because there are significant differences in processing null values and SAS missingvalues, TSSQL has two modes for processing nonexistent data: the ANSI SQL nullmode (ANSI mode) and the SAS missing value mode (SAS mode).

The behavior of nonexistent data depends on how you connect to the SAS TableServer:

� By default, a client application that connects to the SAS Table Server via aclient-side driver, such as JDBC or ODBC, processes data using ANSI mode.

� By default, a Base SAS session that submits PROC TSSQL processes data usingSAS mode. PROC TSSQL provides the ANSIMODE option in order to process datain ANSI mode.

� A Base SAS session using the SAS Table Server LIBNAME engine processes datausing SAS mode.

In most instances, no mode change is necessary to process nonexistent data. Thefollowing are instances of when you might want to change the mode:

� when a client application processes SAS data sets or SPDC file formats and themode for nonexistent data is in ANSI mode

� when the processing of SAS data sets or SPDC file formats is complete and theclient application is ready to return to ANSI mode

CAUTION:If the mode is not set for the desired results, data is lost.

� In ANSI mode, when TSSQL reads a numeric SAS missing data value from thedata source, it converts it to a data type of DOUBLE. If the SAS missing datavalue is a special missing value, such as .A, the .A is lost when it is converted toa null. When a null value is written to a SAS data set or SPDC file format,TSSQL converts it to a missing value, a missing period ( . ).

� In SAS mode, when a null of type CHAR is read from the data source, TSSQLconverts it to a blank character. When the blank character is stored in a SASdata set or SPDC file format, that value can no longer be interpreted as anunknown value in ANSI mode.

For information about how to set TSSQL in ANSI mode and SAS mode, see the SASdocumentation for your client environment.

Differences Between Processing Null Values and SAS Missing ValuesProcessing SAS missing values is different than processing null values and has

significant implications in these situations:

� when filtering data (for example, in a WHERE clause, a HAVING clause, or anouter join ON clause). SAS mode interprets null values as SAS missing values,which are known values, whereas ANSI mode interprets null values as unknownvalues.

� when submitting outer joins in ANSI mode, internal processing might generatenulls for intermediate result tables. TSSQL might generate SAS missing values inSAS mode for intermediate result tables. Therefore, for intermediate result tables,nulls are interpreted as unknown values in ANSI mode and in SAS mode, missingvalues are interpreted as known values.

Page 18: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

14 Reading and Writing Nonexistent Data in ANSI Mode � Chapter 3

� when comparing a blank character. SAS mode interprets the blank character as amissing value. In ANSI mode, a blank character is a blank character, it has nospecial meaning.

The following are attribute and behavior differences between null values and SASmissing values:

Table 3.1 Attribute and Behavior Differences Between Null Values and SASMissing Values

Attribute or Behavior Null Values SAS Missing Values

internal representation metadata floating point or character

evaluation by logical operators is an unknown value that iscompared by usingthree-valued logic, whoseresolved values are True,False, and Unknown. Forexample, WHERE col1 = nullreturns UNKNOWN.

is a known value that whencompared, resolves to aBoolean result

collating sequence order appears as the smallest value appears as the smallest value

For information about the results of logical operations on null values, see“<search-condition>” on page 278.

Reading and Writing Nonexistent Data in ANSI ModeMany relational databases such as Oracle and DB2 implement ANSI SQL null

values. Therefore, the concept of null values using TSSQL is the same as using theSQL language for databases that support ANSI SQL. It is important to understand howTSSQL processes SAS missing values because data can be lost.

SAS missing value data types can be only DOUBLE or CHAR, therefore, only theconversion for these data types is shown. The following table shows the value returnedto the client application when TSSQL reads a null value or a SAS missing value from adata source in ANSI mode:

Table 3.2 Reading Nonexistent Data Values In ANSI Mode

Column Data Type Nonexistent Data Value Value Returned to theAppplication

DOUBLE ., ._, or .A - .Z null

DOUBLE null null

CHAR ’ ’ ’ ’

CHAR null null

Note: The value ’ ’ is a blank space between single quotation marks, which inANSI mode, is a blank space, not nonexistent data. �

Page 19: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � Reading and Writing Nonexistent Data in SAS Mode 15

This next table shows the value stored when nonexistent data values are written todata sources in ANSI mode:

Table 3.3 Writing Nonexistent Data Values in ANSI Mode

Column Data Type Nonexistent DataValue

Value Stored in theSAS Data Set or theSPDC File Format

Value Stored in theANSI SQL NullSupported DataSource

DOUBLE ., ._, or .A – .Z . null

DOUBLE null . null

CHAR ’ ’ ’ ’ ’ ’

CHAR null ’ ’ null

Note: The value ’ ’ is a blank space between single quotation marks, which inANSI mode, is a blank space, not nonexistent data. �

Reading and Writing Nonexistent Data in SAS ModeWhen the client application uses the SAS mode, nonexistent data values are treated

like SAS missing values in the Base SAS environment.The following table shows how nonexistent data values of data type DOUBLE and

CHAR are read in SAS mode:

Table 3.4 Reading Nonexistent Data Values In SAS Mode

Column Data Type Nonexistent Data Value Value Returned to theApplication

DOUBLE ., ._, or .A –.Z ., ._, or .A - .Z

DOUBLE null .

CHAR ’ ’ ’ ’

CHAR null ’ ’

Note: The value ’ ’ is a blank space between single quotation marks, which inSAS mode, is nonexistent data. �

The next table shows how nonexistent data values are written to a data source inSAS mode:

Table 3.5 Writing Nonexistent Data Values In SAS Mode

Column Data Type Nonexistent DataValue

Value Stored in theSAS Data Set or theSPDC File Format

Value Stored in theANSI SQL NullSupported DataSource

DOUBLE ., ._, or .A - .Z ., ._, or .A - .Z null

DOUBLE null . null

CHAR ’ ’ ’ ’ ’ ’

Page 20: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

16 Testing and Modifying Nulls and SAS Missing Values � Chapter 3

Column Data Type Nonexistent DataValue

Value Stored in theSAS Data Set or theSPDC File Format

Value Stored in theANSI SQL NullSupported DataSource

CHAR null ’ ’ ’ ’

Note: The value ’ ’ is a blank space between single quotation marks, which inSAS mode, is nonexistent data. �

Testing and Modifying Nulls and SAS Missing ValuesTSSQL provides the IFNULL function to test for a null value and the NULLIF

expression to change a null value.The IFNULL function takes two expressions as arguments. If the first expression is

a null value, it returns the second expression, otherwise the function returns the firstvalue:

IFNULL(expression, return_value_if_null_expression)

If the value of expression is null, the function returns the value ofreturn_value_if_null_expression.

In this example, all book names are returned for the books that have an unknownvalue of numCopies:

select bookName when ifnull(numCopies, ’T’) = ’T’;

The NULLIF expression also takes two expressions as arguments. If the twoexpressions are equal, the value returned is a null value. Otherwise, the value returnedis the first SQL expression:

NULLIF(expression, test_value_expression);

Here, if the value of numCopies is a negative value, (-1), it is replaced with a null toindicate an unknown value:

update books set numCopies = nullif(numCopies, --1);

For more information, see “IFNULL Function” on page 159 and “NULLIFExpression” on page 216.

Type Conversions

Type Conversion Definitionsbinary data type

refers to the VARBINARY data type

character data typerefers to the CHAR, VARCHAR, NCHAR, and NVARCHAR data types

coercible data typea data type that can be converted to multiple data types, not just a character datatype

Page 21: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � Overview of Type Conversions 17

date/time data typerefers to the DATE, TIME, and TIMESTAMP data types

non-coercible data typea data type that only can be converted to a character data type

numeric data typerefers to the DOUBLE (or FLOAT), REAL, BIGINT, INT, SMALLINT, andTINYINT data types

standard character conversionif an expression is not one of the character data types, it is converted to a CHARdata type

standard numeric conversionif an expression has a coercible, non-numeric data type, it is converted to aDOUBLE data type

Overview of Type ConversionsOperands in an expression must be of the same general data type, numeric,

character, binary, or date/time, in order for TSSQL to resolve the expression. When it isnecessary, TSSQL converts an operand’s data type to another data type, depending onthe operands and operators in the expression. This process is called type conversion.For example, the concatenation operator ( || )operates on character data types. In aconcatenation of the character string “First” and the numeric integer 1, the INTEGERdata type for the operand 1 is converted to a CHAR data type before the concatenationtakes place.

When an operand data type is converted within the same general data type, theoperand data type is promoted. Operands with a data type of SMALLINT andTINYINT are promoted to INTEGER, and operands of type REAL are promoted toDOUBLE. Type promotion is performed for all operations on SMALLINT, TINYINT,and REAL, including arguments for method and function expressions.

Numeric and character data types are coercible. The VARBINARY and the date/timedata types DATE, TIME, and TIMESTAMP, are non-coercible and only can be convertedto one of the character data types by using the PUT function.

When TSSQL evaluates an expression, if the data types of the operands matchexactly, no type conversion or promotion is necessary and the expression is resolved.Otherwise, each operand must go through a standard numeric conversion or a standardcharacter conversion, depending on the operator.

The results of a numeric or character expression are based on a data type precedence.If both operands have different types within the same general data type, the data type ofthe expression is that of the operand with the higher precedence, where 1 is the highestprecedence. For example, for numeric data types, a data type of DOUBLE has thehighest precedence. If an expression has an operand of type INTEGER and an operandof type DOUBLE, the data type of the expression is DOUBLE. A list of precedences canbe found in the topics that follow, if applicable, for the different types of expressions.

Page 22: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

18 Type Conversion for Unary Expressions � Chapter 3

Type Conversion for Unary ExpressionsIn unary expressions, such as ++1 or -444, the standard numeric conversion is

applied to the operand. The following table shows the data type for unary expressions:

Table 3.6 Data Type Conversion for Unary Expressions

Expression Type Expression Data Type

Unary plus same as the operand or DOUBLE for convertedoperands

Unary minus same as the operand

or DOUBLE for converted operands

Unary not INTEGER

Type Conversion for Logical ExpressionsIn logical expressions, such as (a <> start) OR (f = finish), the standard

numeric conversion is applied to each operand. The following table shows theprecedence used to determine the data type of the expression, where 1 is the highestprecedence and 3 is the lowest. The data type of the expression is the data type of theoperand that has the higher precedence.

Table 3.7 Data Type Conversion for Logical Expressions

Precedence Data Type of Either Operand Expression Data Type

1 DOUBLE DOUBLE

2 BIGINT BIGINT

3 all other numeric data types INTEGER

Type Conversion for Arithmetic ExpressionsIn arithmetic expressions, such as a<>b or a + (b * c), the standard numeric

conversion is applied to each operand.The following table shows the precedence used to determine the data type of

arithmetic expressions for the addition, subtraction, multiplication, and divisionoperators, where 1 is the highest precedence and 3 is the lowest. The data type of theexpression is the data type of the operand that has the higher precedence.

Page 23: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � Type Conversion for Concatenation Expressions 19

Table 3.8 Type Conversion for Addition, Subtraction, Multiplication, and DivisionExpressions

Precedence Data Type of Either Operand Expression Data Type

1 DOUBLE DOUBLE

2 BIGINT BIGINT

3 all other numeric data types INTEGER

The following table shows the data type for arithmetic expressions that use thepower operator:

Table 3.9 Data Type Conversion for The Min, Max, and Power OperatorExpressions

Operator Operator Data Type Expression Data Type

** all numeric data types DOUBLE

Type Conversion for Relational ExpressionsIn relational expressions, such as x <= y or i > 4, the standard conversion that is

applied depends on the operand data types. The data type of the expression is alwaysBOOLEAN, as shown in the following tables.

Table 3.10 Data Type Conversion for Relational Expressions Except INExpressions

Order of Data TypeResolution

Data Type of EitherOperand

StandardConversion

Expression DataType

1 any numeric data type numeric BOOLEAN

2 CHAR/NCHAR character BOOLEAN

3 DATE, TIME,TIMESTAMP

none, data types mustmatch

BOOLEAN

4 all other data types none, error returned not applicable

Table 3.11 Data Type Conversion for IN Expressions

Operand Operand Conversion Expression Data Type

all standard numeric or standardcharacter

BOOLEAN

Type Conversion for Concatenation ExpressionsIn concatenation expressions, such as a || b or x !! y, the standard character

conversion is applied to each operand. The following table shows the precedence used todetermine the data type of the expression, where 1 is the highest precedence and 2 isthe lowest. The data type of the expression is the data type of the operand that has thehigher precedence.

Page 24: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

20 TSSQL Expressions � Chapter 3

Table 3.12 Data Type Conversion for Concatenation Expressions

Precedence Data Type of Either Operand Expression Data Type

1 if either is type NCHAR NCHAR

2 CHAR CHAR

TSSQL Expressions

Query Expressions and Subqueries

Overview of Query ExpressionsA query expression or query is one or more SELECT statements that produce a result

table. Multiple SELECT statements can be combined by set operators.Set operators (UNION, EXCEPT, and INTERSECT) combine columns from two

queries based on their position in the referenced tables without regard to individualcolumn names. Columns in the same relative position in the two queries must have thesame data types. The column names of the tables in the first query become the columnnames of the result table.

A query expression with set operators is evaluated as follows.

� Each SELECT statement is evaluated to produce a virtual, intermediate resulttable.

� Each intermediate result table then becomes an operand linked with a setoperator to form an expression, for example, A UNION B.

� If the query expression involves more than two SELECT statements, then theresult from the first two becomes an operand for the next set operator andoperand, such as (A UNION B) EXCEPT C, ((A UNION B) EXCEPT C)INTERSECT D, and so on.

� Evaluating a query expression produces a single output table.

Note: There is no limit on the number of tables that you can reference in a TSSQLquery. However, queries with a large number of table references can cause performanceissues. �

For information about using set operators, see the “SELECT Statement” on page 257.

Overview of SubqueriesA subquery is a query expression that is nested as part of another query expression.

A subquery selects one or more rows from a table based on values in another table.Depending on the clause that contains it, a subquery can return a single value ormultiple values. A subquery that returns a single value is a scalar subquery.

If more than one subquery is used in a query expression, then the innermost query isevaluated first, then the next innermost query, and so on, moving outward.

A subquery is used in the WHERE or HAVING clause of a SELECT, INSERT,UPDATE, or DELETE statement.

Page 25: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � TSSQL Value Expressions 21

Correlated SubqueriesIn a correlated subquery, the WHERE clause in a subquery refers to values in a table

in the outer query. The correlated subquery is evaluated for each row in the outer query.With correlated subqueries, TSSQL executes the subquery and the outer query together.

In the following example, the second WHERE clause uses the column referencei.price. If you look at the FROM clause in the outer query, you will see that i isactually a correlation name associated with the inventory table that is being used inthe outer query.

select prod, price from inventory iwhere price in (select price

from warehousewhere cost = i.price);

TSSQL Value Expressions

Numeric Value ExpressionsNumeric value expressions enable you to compute numeric values by using addition

(+), subtraction (-), multiplication (*), and division (/) operators. Numeric values can benumeric literals. These values can also be column names, variables, or subqueriesprovided the column names, variables, or subqueries evaluate to a numeric value.

The data type of the result of a numeric value expression is based on the data type ofthe operands.

The following are examples of numeric value expressions.

� –6

� salary * 1.07

� cost + (exp – discount)

Row Value ExpressionsA row value expression, or row value constructor, is one or more value expressions

enclosed in parentheses. Multiple value expressions are separated by commas.A row value constructor can contain the following values.

� value-expression

� NULL� DEFAULT� row-subquery

� (row-value-constructor, row-value-constructor, …)

� ROW (row-value-constructor, row-value-constructor, …)

NULL makes the value for the corresponding column in the table null. DEFAULTmakes the value for the corresponding column the default value. ARRAY[ ] is valid onlyif the destination is an array and creates an empty array. The row constructor valuesother than NULL, DEFAULT, and ARRAY[ ] can be simple values or value expressions.

A row value constructor operates on a list of values or columns rather than a singlevalue or column. You can operate on an entire row at a time or a subset of a row.

Here is one example of where you can use row value constructors is in the INSERTstatement to add multiple values to a table.

Page 26: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

22 Dates and Times in TSSQL � Chapter 3

INSERT INTO inventory(prodname, qty, price)VALUES (’rice’, 3849, .37);

Another example is in a WHERE clause to compare column values.

SELECT * FROM inventoryWHERE (inventory.prodname, inventory.price)

=(competitor.prodname, inventory.price);

Dates and Times in TSSQL

Overview of Dates and Times in TSSQLTSSQL supports the industry standard conventions for dates, times, and datetimes

using the DATE, TIME, and TIMESTAMP data types. All third-party data sources thatare supported by TSSQL, as well as SAS SPD data sets in the SPDD file format,support these data types. You can create SAS data sets and SPD data sets for theSPDC file format using these data types, but TSSQL converts these data types to aDOUBLE having a date, time, for datetime format.

TSSQL can read and process SAS dates, time, and datetime values, only as valueswith a data type of DOUBLE. TSSQL cannot convert a SAS date, time, or datetimevalue with a data type of DOUBLE to a value with a data type of DATE, TIME, orTIMESTAMP.

TSSQL date, time, and datetime functions can provide local current time as well asGMT current time.

TSSQL formats enable dates, times, and datetimes to be formatted in various ways.

TSSQL Date, Time, and Datetime ConstantsYou write TSSQL date, time, or datetime constants using the following syntax:

DATE ’yyyy-mm-dd’

TIME’hh:nn:ss[.fraction]’

TIMESTAMP ’yyyy-mm-dd hh:mm:ss[.fraction]’

where

yyyy is a four digit year

mm is a two digit month, 01 - 12

dd is a two digit day, 01 - 31

hh is a two-digit military hour, 00 - 23

mm is a two-digit minute, 00 - 59

ss is a two-digit second, 00 - 61

fraction can be one to ten digits, 0 - 9, is optional, and represent a fraction of a second

The string portion of the value after the DATE, TIME, or TIMESTAMP keywordmust be enclosed in single quotation marks.

Page 27: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � Using Dates and Times in SAS Data Sets and SPD Data Sets, the SPDC File Format 23

In the date constant, the dashes are required and the length of the date string mustbe 10.

In the time constant, the colons are required. If the fraction of a second is notpresent, the time string must be eight characters long and it can include or exclude theperiod. If the fraction of second is present, the fraction can be up to nine digits long.The time constant can be between 8 and 18 characters long.

In the timestamp constant, the dashes in the date are required as well as the colonsin the time. If the fraction of a second is not present, it can include or exclude theperiod. If fraction of a second is present, the fraction can be up to nine digits long. Thetimestamp constant can be between 19 and 29 characters long.

The following are examples of TSSQL date, time, and timestamp constants:

date’2008-01-31’time’20:44:59’timestamp’2007-02-02 07:00:00.7569’

The following is an example of creating a table that includes datetime values:

create table bikerace (name char(30), entry_number int,registration_date timestamp);insert into bikerace values (’Andersen, Mark’, 342,

timestamp’2007-03-15 12:27:33’);insert into bikerace values (’Steinbek, Mark’, 244,

timestamp’2006-11-27 13:26:19’);

Using Dates and Times in SAS Data Sets and SPD Data Sets, the SPDCFile Format

When you create a table using the BASE driver or the SPD driver for the SPDC fileformat, you specify columns for date, time, and datetime values by using the DATE,TIME, and TIMESTAMP data types. TSSQL converts values with these data types to adata type of DOUBLE having these SAS formats:

Table 3.13 SAS Formats Assigned to Date and Time Values in SAS Data Sets andSPD Data Sets, the SPDC File Format

TSSQL Date/Time Data Type SAS Format

DATE DATE9.

TIME TIME8.

TIMESTAMP DATETIME19.2

These SAS formats cannot be altered by using the TSSQL ALTER TABLE statement.They can be altered only by using protocols in Base SAS to alter formats assigned to acolumn in a SAS data set or an SPD data set, the SPDC file format.

The following example creates a SAS data set that contains a date, time, anddatetime value using the DATE, TIME, and TIMESTAMP data types, and illustrateshow they are displayed using SAS formats:

options msglevel=i;proc tssql

conn="driver=base;catalog=tssql;schema=(name=tssql;primarypath=’path-to-your-base-table’)"

nolibs;

Page 28: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

24 Date, Time, and Datetime Functions � Chapter 3

create table basedt (d date, t time, ts timestamp);insert into basedt values (date ’2006-07-31’, time ’10:31:22’,

timestamp ’2008-08-01 13:30:33.222’);select * from basedt;

quit;

The following is the output:

The SAS System 09:19 Monday, July 31, 2006 3

D T TS__________________________________________31JUL2006 10:31:22 01AUG08:13:30:33.22

Any format that you might specify for these date, time, and datetime valuesoverrides the format stored with these values. The following SELECT statements usesthe PUT function to format the datetime value using the DATETIME21.2 format inorder to display the four-character year 2008:

select put(ts,datetime21.2) from basedt;

The following is the output:

The SAS System 09:19 Monday, July 31, 2006 4

column____________________01AUG2008:13:30:33.22

Date, Time, and Datetime Functions

The following is a list and description of TSSQL date, time, and datetime functions:

Table 3.14 Date, Time, and Datetime Functions

Function Description

CURRENT_DATE Returns the current GMT date.

CURRENT_TIME Returns the current GMT time.

CURRENT_TIMESTAMP Returns the current GMT date and time.

DAY Returns the numeric day of the month from adate or datetime value.

HOUR Returns the hour from a time or datetime value.

LOCALTIME Returns the current time for your time zone.

LOCALTIMESTAMP Returns the date and time for your time zone.

MINUTE Returns the minute from a time or datetimevalue.

MONTH Returns the numeric month from a date ordatetime value.

Page 29: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � Date, Time, and Datetime Formats for SAS and SPD Data Sets, the SPDC File Format 25

Function Description

SECOND Returns the second from a time or datetimevalue.

YEAR Returns the year from a date or datetime value.

Date, Time, and Datetime Formats for SAS and SPD Data Sets, theSPDC File Format

The following date, time, and datetime formats can be used to format SAS data setsand SPD data sets, the SPDC file format:

Table 3.15 Date, Time, and Datetime Functions Arranged by Type

Type Language Element Input Formatted Result

Date formats DATE. date’2008-03-17’ 17MAR08

DATE9. date’2008-03-17’ 17MAR2008

DATEAMPM21. timestamp’2008-03-1714:22:21’

17MAR08:02:22:21 PM

DATEAMPM23. timestamp’2008-03-1714:22:21’

17MAR2008:02:22:21PM

DAY. date’2008-03-17’ 17

DDMMYY. date’2008-03-17’ 17/03/08

DDMMYB. date’2008-03-17’ 17 03 08

DDMMYYC. date’2008-03-17’ 17:03:08

DDMMYYD10. date’2008-03-17’ 17-03-2008

DDMMYYN. date’2008-03-17’ 17032008

DDMMYYP. date’2008-03-17’ 17.03.08

DDMMYYS. date’2008-03-17’ 17/03/08

DOWNAME. date’2008-03-17’ Monday

JULIAN date’2008-03-17’ 08077

MMDDYY. date’2008-03-17’ 03/17/08

MMDDYY10. date’2008-03-17’ 03/17/2008

MMDDYYB. date’2008-03-17’ 03 17 08

MMDDYC. date’2008-03-17’ 03:17:08

MMDDYD. date’2008-03-17’ 03-17-08

MMDDYN. date’2008-03-17’ 03172008

MMDDYYP. date’2008-03-17’ 03.17.08

MMDDYYS. date’2008-03-17’ 03/17/08

MMYY. date’2008-03-17’ 03M2008

MMYYC. date’2008-03-17’ 03:2008

MMYYD. date’2008-03-17’ 03-2008

Page 30: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

26 Date, Time, and Datetime Formats for SAS and SPD Data Sets, the SPDC File Format � Chapter 3

Type Language Element Input Formatted Result

MMYYN. date’2008-03-17’ 032008

MMYYP. date’2008-03-17’ 03.2008

MMYYS. date’2008-03-17’ 03/2008

MONNAME. date’2008-03-17’ March

MONTH. date’2008-03-17’ 3

MONYY date’2008-03-17’ MAR08

WEEKDATE. date’2008-03-17’ Monday, March 17,2008

WEEKDATX. date’2008-03-17’ Monday 17 March2008

WEEKDAY. date’2008-03-17’ 2

Datetime formats DTDATE. timestamp’2008-03-1814:22:21’

17MAR08

DTMONYY. timestamp’2008-03-1814:22:21’

MAR08

DTWKDATX. timestamp’2008-03-1814:22:21’

Monday, March 172008

DTYEAR. timestamp’2008-03-1814:22:21’

2008

DTYYQC. timestamp’2008-03-1814:22:21’

08:1

Quarter formats QTR. date’2008-03-17’ 1

QTRR. date’2008-03-17’ I

Time formats HHMM. time’14:22:21’ 14:22

HOUR. time’14:22:21’ 14

TIME. time’14:22:21’ 14:22:21

TIMEAMPM. time’14:22:21’ 2:22:21 PM

TOD. time’14:22:21 14:22:21

Year formats YEAR. date’2008-03-17’ 2008

YYMM. date’2008-03-17’ 2008M03

YYMMC. date’2008-03-17’ 2008:03

YYMMD. date’2008-03-17’ 2008-03

YYMMN. date’2008-03-17’ 200803

YYMMP. date’2008-03-17’ 2008.03

YYMMS. date’2008-03-17’ 2008/03

YYMMDD. date’2008-03-17’ 08-03-17

YYMMDDB. date’2008-03-17’ 08 03 17

YYMMDDC. date’2008-03-17’ 08:03:17

YYMMDDD. date’2008-03-17’ 08-03-17

Page 31: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � DICTIONARY Tables 27

Type Language Element Input Formatted Result

YYMMDDN. date’2008-03-17’ 20080317

YYMMDDP. date’2008-03-17’ 08.03.17

YYMMDDS. date’2008-03-17’ 08/03/17

YYMON. date’2008-03-17’ 2008MAR

Year/Quarter formats YYQ. date’2008-03-17’ 2008Q1

YYQC. date’2008-03-17’ 2008:1

YYQD. date’2008-03-17’ 2008-1

YYQN. date’2008-03-17’ 20081

YYQP. date’2008-03-17’ 2008.1

YYQS. date’2008-03-17’ 2008/1

YYQR. date’2008-03-17’ 2008QI

YYQRC. date’2008-03-17’ 2008:I

YYQRD. date’2008-03-17’ 2008-I

YYQRN. date’2008-03-17’ 2008I

YYQRP. date’2008-03-17’ 2008.I

YYQRS. date’2008-03-17’ 2008/I

DICTIONARY TablesSAS Table Server DICTIONARY tables are similar to but different than Base SAS

DICTIONARY tables. A SAS Table Server DICTIONARY table is a read-only table thatcontains information about columns, tables, and catalogs, and statistics about tablesand their associated indexes.

The following table describes the DICTIONARY tables that are available. For acomplete description of all the columns in the DICTIONARY tables, see Appendix 3,“DICTIONARY Table Descriptions,” on page 315.

Table 3.16 DICTIONARY Tables

DICTIONARY table Description

CATALOGS Contains information about catalogs in the current connection.

COLUMNS Contains information about columns in all known tables.

COLUMN_STATISTICS Contains table and index statistics that are based on the columnsin the tables.

STATISTICS Contains table and index statistics that are associated with thetables.

TABLES Contains information about table types and a list of table,catalog, or schema names of tables in the data source.

You can query DICTIONARY tables the same way that you query any other table.For all DICTIONARY tables except CATALOG, you can include subsetting with aWHERE clause and ordering the results. The following queries are examples.

Page 32: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

28 TSSQL Pass-Through Facility � Chapter 3

select * from dictionary.catalogs where catalog=salecat;;

select * from dictionary.columns where table_name=yearend;

select * from dictionary.tables;

Note: Some of the DICTIONARY tables, for example STATISTICS andCOLUMN_STATISTICS, rely on the table driver support for their information. If thetable driver does not support the underlying function call, no rows will be returned. �

TSSQL Pass-Through FacilityThe TSSQL Pass-Through Facility enables you to connect to a SAS Table Server data

source and send SQL statements directly to that data source for execution. This facilityalso enables you to use the syntax of your DBMS, and it supports any non-ANSIstandard SQL that is supported by your DBMS.

The TSSQL Pass-Through Facility bypasses the TSSQL language processor becausethe DRIVER=TSSQL specification is omitted from the connection string. A clientapplication is specified in the connection string for the data source. For moreinformation, see “Connection String Options for Client-Side Drivers” in SAS TableServer Administrator’s Guide.

TSSQL Reserved WordsThe following words are reserved as TSSQL language keywords and cannot be used

as variable names or in any other way that differs from their intended use.

Page 33: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � TSSQL Reserved Words 29

Table 3.17 TSSQL Reserved Words A - D

A

ABORT

ABSOLUTE

ACCESS

ACTION

ADD

AFTER

AGGREGATE

ALL

ALLOCATE

ALTER

ANALYSE

ANALYZE

AND

ANY

ARE

ARRAY

AS

ASC

ASENSITIVE

ASSERTION

ASSIGNMENT

ASYMMETRIC

AT

ATOMIC

AUTORIZATION

B

BACKWARD

BEFORE

BEGIN

BETWEEN

BIGINT

BINARY

BIT

BLOB

BOOLEAN

BOTH

BY

C

CACHE

CALL

CALLED

CARDINALITY

CASCADE

CASCADED

CASE

CAST

CHAIN

CHAR

CHAR_LENGTH

CHARACTER

CHARACTER_LENGTH

CHARACTERISTICS

CHECK

CHECKPOINT

CLASS

CLOB

CLOSE

CLUSTER

COALESCE

COLLATE

COLLECT

COLUMN

COMMENT

COMMIT

COMMITTED

CONDITION

CONNECT

CONSTRAINT

CONSTRAINTS

CONVERSION

CONVERT

COPY

CORR

CORRESPONDING

COVAR_POP

COVAR_SAMP

CREATE

CREATEDB

CREATEUSER

CROSS

CUBE

CUME_DIST

CURRENT

CURRENT_DATE

CURRENT_DEFAULT_TRANSFORM_GROUP

CURRENT_PATH

CURRENT_ROLE

CURRENT_TIME

CURRENT_TIMESTAMP

CURRENT_TRANSFORM_GROUP_FOR_TYPE

CURRENT_USER

CURSOR

CYCLE

D

DATABASE

DAY

DEALLOCATE

DEC

DECIMAL

DECLARE

DEFAULT

DEFAULTS

DEFERRABLE

DEFERRED

DEFINER

DELETE

DELIMITER

DELIMITERS

DENSE_RANK

DEREF

DESC

DESCRIBE

DETERMINISTIC

DISCONNECT

DISTINCT

DO

DOMAIN

DOUBLE

DROP

DYNAMIC

Page 34: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

30 TSSQL Reserved Words � Chapter 3

Table 3.18 TSSQL Reserved Words E - O

E

EACH

ELEMENT

ELSE

ENCODING

ENCRYPTED

END

END-EXEC

ESCAPE

EVERY

EXCEPT

EXCLUDING

EXCLUSIVE

EXEC

EXECUTE

EXISTS

EXPLAIN

EXTERNAL

EXTRACT

F

FALSE

FETCH

FILTER

FIRST

FLOAT

FOR

FORCE

FOREIGN

FORWARD

FREE

FREEZE

FROM

FULL

FUNCTION

FUSION

G

GET

GLOBAL

GRANT

GROUP

GROUPING

H

HANDLER

HAVING

HOLD

I

ILIKE

IMMEDIATE

IMMUTABLE

IMPLICIT

IN

INCLUDING

INCREMENT

INDEX

INDICATOR

INHERITS

INITIALLY

INNER

INOUT

INPUT

INSENSITIVE

INSERT

INSTEAD

INT

INTEGER

INTERSECT

INTERSECTION

INTERVAL

INTO

INVOKER

IS

ISNULL

ISOLATION

J

JOIN

K

KEY

L

LANCOMPILER

LANGUAGE

LARGE

LAST

LATERAL

LEADING

LEFT

LEVEL

LIKE

LIMIT

LISTEN

LOAD

LOCAL

LOCALTIME

LOCALTIMESTAMP

LOCATION

LOCK

M

MATCH

MAXVALUE

MEMBER

MERGE

METHOD

MINUTE

MINVALUE

MODE

MODIFIES

MODULE

MONTH

MOVE

MULTISET

N

NAMES

NATIONAL

NATURAL

NCHAR

NCLOB

NEW

NEXT

NO

NOCREATEDB

NOCREATEUSER

NONE

NORMALIZE

NOT

NOTHING

NOTIFY

NOTNULL

NULL

NULLIF

NUMERIC

O

OF

OFF

OFFSET

OIDS

OLD

ON

ONLY

OPEN

OPERATOR

OPTION

OR

ORDER

OUT

OUTER

OVER

OVERLAPS

OVERLAY

OWNER

Page 35: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Language Concepts � TSSQL Reserved Words 31

Table 3.19 TSSQL Reserved Words P - Z

P

PARAMETER

PARTIAL

PARTITION

PASSWORD

PATH

PENDANT

PERCENT_RANK

PERCENTILE_CONT

PERCENTILE_DESC

PLACING

POLITION

PRECISION

PREPARE

PRESERVE

PRIMARY

PRIOR

PRIVILEGES

PROCEDURAL

PROCEDURE

R

RANK

READ

READS

REAL

RECHECK

RECURSIVE

REF

REFERENCES

REFERENCING

REGR_AVGX

REGR_AVGY

REGR_COUNT

REGR_INTERCEPT

REGR_R2

REGR_SLOPE

REGR_SXX

REGR_SXY

REGR_SYY

REINDEX

RELATIVE

RENAME

REPLACE

RESET

RESTART

RESTRICT

RESULT

RETURN

RETURNS

REVOKE

RIGHT

ROLLBACK

ROLLUP

ROW

ROWS

ROW_NUMBER

RULE

S

SCHEMA

SCOPE

SCROLL

SEARCH

SECOND

SECURITY

SELECT

SENSITIVE

SPECIFIC

SPECIFICTYPE

SEQUENCE

SERIALIZABLE

SESSION

SESSION_USER

SET

SETOF

SHARE

SHOW

SIMILAR

SIMPLE

SMALLINT

SOME

SQLEXCEPTION

SQLSTATE

SQLWARNING

STABLE

START

STATEMENT

STATIC

STATISTICS

STDDEV_POP

STDDEV_SAMP

STDIN

STDOUT

STORAGE

STRICT

SUBMULTISET

SUBSTRING

SYMMETRIC

SYSID

SYSTEM

SYSTEM_USER

T

TABLE

TABLESAMPLE

TEMP

TEMPLATE

TEMPORARY

THEN

TIME

TIMESTAMP

TIMEZONE_HOUR

TIMEZONE_MINUTE

TO

TOAST

TRAILING

TRANSACTION

TRANSLATE

TRANSLATION

TREAT

TRIGGER

TRIM

TRUE

TRUNCATE

TRUSTED

TYPE

U

UESCAPE

UNENCRYPTED

UNION

UNIQUE

UNKNOWN

UNLISTEN

UNNEST

UNTIL

UPDATE

USAGE

USER

USING

V

VACUUM

VALID

VALIDATOR

VALUE

VALUES

VARCHAR

VARYING

VAR_POP

VAR_SAMP

VERBOSE

VERSION

VIEW

VOLATILE

W

WHEN

WHENEVER

WHERE

WIDTH_BUCKET

WINDOW

WITH

WITHIN

WITHOUT

WORK

WRITE

Y

YEAR

Z

ZONE

Page 36: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

32

Page 37: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

33

C H A P T E R

4TSSQL Formats

Overview of Formats 35General Format Syntax 35

Using Formats in TSSQL 36

How to Specify, Change, and Delete Formats 36

Output Formatted Data in TSSQL 36

Validation of TSSQL Formats 37Format Categories 37

TSSQL Format Examples 37

Formats Documented in Other SAS Publications 38

Dictionary 40

$BASE64Xw. Format 40

$BINARYw. Format 41$CHARw. Format 42

$HEXw. Format 43

$OCTALw. Format 44

$QUOTEw. Format 44

$REVERJw. Format 46$REVERSw. Format 47

$UPCASEw. Format 48

$w. Format 48

BESTw. Format 49

BESTDw.p Format 51BINARYw. Format 52

COMMAw.d Format 53

COMMAXw.d Format 54

Dw.p Format 55

DATEw. Format 56

DATEAMPMw.d Format 57DATETIMEw.d Format 59

DAYw. Format 60

DDMMYYw. Format 61

DDMMYYxw. Format 63

DOLLARw.d Format 64DOLLARXw.d Format 66

DOWNAMEw. Format 67

DTDATEw. Format 68

DTMONYYw. Format 69

DTWKDATXw. Format 70DTYEARw. Format 71

DTYYQCw. Format 72

Ew. Format 73

Page 38: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

34 Contents � Chapter 4

EUROw.d Format 74EUROXw.d Format 75

FLOATw.d Format 77

FRACTw. Format 78

HEXw. Format 78

HHMMw.d Format 80HOURw.d Format 81

IEEEw.d Format 82

JULIANw. Format 83

MMDDYYw. Format 84

MMDDYYxw. Format 86

MMSSw.d Format 87MMYYw. Format 89

MMYYxw. Format 90

MONNAMEw. Format 91

MONTHw. Format 92

MONYYw. Format 93NEGPARENw.d Format 94

NENGOw. Format 95

OCTALw. Format 96

PERCENTw.d Format 97

PERCENTNw.d Format 98QTRw. Format 99

QTRRw. Format 100

ROMANw. Format 101

SIZEKw.d Format 102

SIZEKMGw.d Format 103

TIMEw.d Format 104TIMEAMPMw.d Format 105

TODw.d Format 107

VAXRBw.d Format 108

w.d Format 109

WEEKDATEw. Format 110WEEKDATXw. Format 111

WEEKDAYw. Format 112

YEARw. Format 113

YENw.d Format 114

YYMMw. Format 115YYMMxw. Format 116

YYMMDDw. Format 118

YYMMDDxw. Format 119

YYMONw. Format 121

YYQw. Format 122

YYQxw. Format 123YYQRw. Format 125

YYQRxw. Format 126

YYQZw. Format 128

Zw.d Format 129

Page 39: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � General Format Syntax 35

Overview of Formats

A format is an instruction that TSSQL uses to write data values. You use formats tocontrol the written appearance of data values, or, in some cases, to group data valuestogether for analysis. For example, the ROMANw. format, which converts numericvalues to roman numerals, writes the numeric value 2006 as MMVI.

General Format Syntax

TSSQL formats have the following form:

[ $ ]format [w ]. [d]

Here is an explanation of the syntax:

$indicates a character format; its absence indicates a numeric informat.

formatnames the format. The format is a TSSQL format or a user-defined format thatwas previously defined with the INVALUE statement in PROC FORMAT. Formore information on user-defined formats, see PROC FORMAT in the Base SASProcedures Guide.

wspecifies the format width, which for most formats is the number of columns in theinput data.

dspecifies a decimal scaling factor in the numeric formats. TSSQL divides the inputdata by 10 to the power of d.

Tip: When the value of d is greater than fifteen, the precision of the decimalvalue after the fifteenth decimal place might not be accurate.

Formats always contain a period (.) as a part of the name. If you omit the w and thed values from the format, SAS uses default values. The d value that you specify with aformat tells TSSQL to display that many decimal places, regardless of how manydecimal places are in the data. Formats never change or truncate the internally storeddata values.

For example, in DOLLAR10.2, the w value of 10 specifies a maximum of 10 columnsfor the value. The d value of 2 specifies that two of these columns are for the decimalpart of the value, which leaves eight columns for all the remaining characters in thevalue. This includes the decimal point, the remaining numeric value, a minus sign ifthe value is negative, the dollar sign, and commas, if any.

If the format width is too narrow to represent a value, TSSQL tries to squeeze thevalue into the space available. Character formats truncate values on the right.Numeric formats sometimes revert to the BESTw.d format. TSSQL prints asterisks ifyou do not specify an adequate width. In the following example, the result is x=**.

select put(123, 2.);

If you use an incompatible format, such as using a numeric format to write charactervalues, TSSQL first attempts to use an analogous format of the other type. If this is notfeasible, an error message that describes the problem appears in the SAS log.

Page 40: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

36 Using Formats in TSSQL � Chapter 4

Using Formats in TSSQL

How to Specify, Change, and Delete FormatsIn TSSQL, you specify formats as an attribute of the HAVING clause of the

“CREATE TABLE Statement” on page 236. For example, in the following statement,the column profit is declared with the EURO13.2 format.

create table monthly (profit double having format euro13.2);

To change a format, you use the “ALTER TABLE Statement” on page 226. Forexample, the following statement changes the format of the column profit in theprevious example to EUROX13.2.

alter table monthly alter profit set format eurox13.2;

To remove a format, you use the ALTER TABLE statement. For example, thefollowing statement removes the EURO13.2 format from the column profit in the firstexample.

alter table monthly alter profit drop format;

Output Formatted Data in TSSQLFormats are used as arguments in the PUT function to output formatted data. For

example, in this case, the PUT function will return the formatted value of 99 using theBEST12.6 format.

select put(99, best12.6);

If the PUT function is used without a format, an error occurs.Any type conversions of the value that is formatted are done based on the format

name. Any value passed to the PUT function with a numeric format will be converted,if necessary, to DOUBLE. Any value passed to the PUT function with a characterformat will be converted to NCHAR. For more information, see the “PUT Function” onpage 177.

In the SAS Table Server, you can store and retrieve format names. The format nameis associated with a column either temporarily for the duration of an operation orpermanently by storing the format as a metadata attribute on the column, which thencan be retrieved for subsequent operations.

Note: If the format stored in the SAS Table Server environment is invalid, an errorwill occur only when the invalid format is used in the client application. �

TSSQL supports SAS formats as follows.

� Both SAS–supplied and user-defined formats can be used. For information on howto create your own format in SAS, see PROC FORMAT in the Base SASProcedures Guide.

Note: To create and access user-defined formats, a Base SAS session must beavailable in order to access the SAS catalog file that stores the SAS formatdefinitions. �

Note: User–defined formats can be used only when working with the Base SASinterface and the TSSQL procedure. �

� Only the SAS data set and SPD data sets support storing and retrieving a formatwith a column.

Page 41: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � TSSQL Format Examples 37

� Formats can be associated with all data types, but all data types will be convertedto either CHAR or DOUBLE.

� You associate SAS formats with a column by using the HAVING clause of theTSSQL CREATE TABLE statement. For more information, see “Using Formats inTSSQL” on page 36.

Validation of TSSQL FormatsFormats are not validated by a data source or applied to a column until execution

time.When a table is created using the Table Server LIBNAME engine, the Table Server

LIBNAME engine will validate the format name when either a SAS supplied or auser-written format is used. For more information on using the Table Server LIBNAMEengine, see SAS Language Interfaces to Table Server.

When a table is created using the SAS Table Server, no validation occurs until thePUT function is executed.

When metadata for a column is requested, the format name will be returned withoutvalidation.

Format CategoriesFormats can be categoriezed by the types of vales that they operate on. Each TSPL

format belongs to one of the following categories:

Character writes character data values from character variables.

Date and time writes character data values from character variables.

Numeric writes numeric data values from numeric variables.

TSSQL Format Examples

create table sales (prod nchar having format $5.);

alter table sales alter date set format datetime12.;

alter table sales drop date format;

x = put (date, ddmmyy8.);

Page 42: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

38 Formats Documented in Other SAS Publications � Chapter 4

Formats Documented in Other SAS Publications

The following formats are available for use in TSSQL. See the SAS NationalLanguage Support (NLS): Reference Guide for documentation of these formats.

Table 4.1 Formats for TSSQL

Category Formats for NLS Description

Date and Time NLDATEw. Format Converts a SAS date value to the date value of thespecified locale, and then writes the date value as a date.

NLDATEMDw. Format Converts the SAS date value to the date value of thespecified locale, and then writes the value as the name ofthe month and the day of the month.

NLDATEMNw. Format Converts a SAS date value to the date value of thespecified locale, and then writes the value as the name ofthe month.

NLDATEWw. Format Converts a SAS date value to the date value of thespecified locale, and then writes the value as the dateand the day of the week.

NLDATEWNw. Format Converts the SAS date value to the date value of thespecified locale, and then writes the date value as theday of the week.

NLDATEYMw. Format Converts the SAS date value to the date value of thespecified locale, and then writes the date value as theyear and the name of the month.

NLDATEYQw. Format Converts the SAS date value to the date value of thespecified locale, and then writes the date value as theyear and the quarter.

NLDATEYRw. Format Converts the SAS date value to the date value of thespecified locale, and then writes the date value as theyear.

NLDATEYWw. Format Converts the SAS date value to the date value of thespecified locale, and then writes the date value as theyear and the week.

NLDATMw. Format Converts a SAS datetime value to the datetime value ofthe specified locale, and then writes the value as adatetime.

NLDATMAPw. Format Converts a SAS datetime value to the datetime value ofthe specified locale, and then writes the value as adatetime with a.m. or p.m.

NLDATMDTw. Format Converts the SAS datetime value to the datetime valueof the specified locale, and then writes the value as thename of the month, day of the month and year.

NLDATMMDw. Format Converts the SAS datetime value to the datetime valueof the specified locale, and then writes the value as thename of the month and the day of the month.

Page 43: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � Formats Documented in Other SAS Publications 39

Category Formats for NLS Description

NLDATMMNw. Format Converts the SAS datetime value to the datetime valueof the specified locale, and then writes the value as thename of the month.

NLDATMTMw. Format Converts the time portion of a SAS datetime value to thetime-of-day value of the specified locale, and then writesthe value as a time of day.

NLDATMWNw. Format Converts a SAS datetime value to the datetime value ofthe specified locale, and then writes the value as the dayof the week.

NLDATMWw. Format Converts SAS datetime values to the locale sensitivedatetime string as the day of the week and the datetime.

NLDATMYMw. Format Converts the SAS datetime value to the datetime valueof the specified locale, and then writes the value as theyear and the name of the month.

NLDATMYQw. Format Converts the SAS datetime value to the datetime valueof the specified locale, and then writes the value as theyear and the quarter of the year.

NLDATMYRw. Format Converts the SAS datetime value to the datetime value ofthe specified locale, and then writes the value as the year.

NLDATMYWw. Format Converts the SAS datetime value to the datetime valueof the specified locale, and then writes the value as theyear and the name of the week.

NLTIMEw. Format Converts a SAS time value to the time value of thespecified locale, and then writes the value as a timevalue.

NLTIMAPw. Format Converts a SAS time value to the time value of aspecified locale, and then writes the value as a timevalue with a.m. or p.m.

Numeric NLBESTw. Format Writes the best numerical notation based on the locale.

NLMNYw.d Format Writes the monetary format of the local expression in thespecified locale using local currency.

NLMNYIw.d Format Writes the monetary format of the internationalexpression in the specified locale.

NLNUMw.d Format Writes the numeric format of the local expression in thespecified locale.

NLNUMIw.d Format Writes the numeric format of the internationalexpression in the specified locale.

NLPCTw.d Format Writes percentage data of the local expression in thespecified locale.

NLPCTIw.d Format Writes percentage data of the international expression inthe specified locale.

NLPCTNw.d Format Produces percentages, using a minus sign for negativevalues.

NLPCTPw.d Format Writes locale-specific numeric values as percentages.

Page 44: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

40 Dictionary � Chapter 4

Category Formats for NLS Description

NLPVALUEw.d Format Writes p-values of the local expression in the specifiedlocale.

NLSTRMONw.d Format Writes a numeric value as a day-of-the-month in thespecified locale.

NLSTRQTRw.d Format Writes a numeric value as the quarter-of-the-year in thespecified locale.

NLSTRWKw.d Format Writes a numeric value as the day-of-the-week in thespecified locale.

Dictionary

$BASE64Xw. Format

Converts character data into ASCII text by using Base 64 encoding.

Category: CharacterAlignment: left

Syntax$BAS64Xw.

Syntax Description

wspecifies the width of the output field.Default: 1Range: 1-32767

DetailsBase 64 is an industry encoding method whose encoded characters are determined byusing a positional scheme that uses only ASCII characters. Several Base 64 encodingschemes have been defined by the industry for specific uses, such as e-mail or contentmasking. SAS maps positions 0 - 61 to the characters A - Z, a - z, and 0 - 9. Position 62maps to the character +, and position 63 maps to the character /.

The following are some uses of Base 64 encoding:� embed binary data in an XML file� encode passwords� encode URLs

Page 45: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � $BINARYw. Format 41

The ’=’ character in the encoded results indicates that the results have been paddedwith zero bits. In order for the encoded characters to be decoded, the ’=’ must beincluded in the value to be decoded.

Examples

Statement Results

select put ("FCA01A7993BC", $base64x64.); RkNBMDFBNzk5M0JD

select put ("MyPassword", $base64x64.); TXlQYXNzd29yZA==

select put ("www.mydomain.com/myhiddenURL",$base64x64.);

d3d3Lm15ZG9tYWluLmNvbi9teWhpZGRlblVSTA==

$BINARYw. Format

Converts character data to binary representation.

Category: CharacterAlignment: left

Syntax$BINARYw.

Syntax Description

wspecifies the width of the output field.Default: The default width is calculated based on the length of the variable to be

printed.Range: 1–32767

ComparisonsThe $BINARYw. format converts character values to binary representation. TheBINARYw. format converts numeric values to binary representation.

Page 46: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

42 $CHARw. Format � Chapter 4

Examples

Statements Results

ASCII EBCDIC

----+----1----+----2 ----+----1----+----2

select put(’AB’, $binary16.); 0100000101000010 1100000111000010

See AlsoFormats:“BINARYw. Format” on page 52

$CHARw. FormatWrites standard character data.

Category: CharacterAlignment: leftAlias: $w.

Syntax$CHARw.

Syntax Description

wspecifies the width of the output field.Default: 8 if the length of variable is undefined; otherwise, the length of the variableRange: 1–32767

ComparisonsThe $CHARw., $w., and $Fw. formats are identical, and they do not trim leadingblanks.

Examples

Statement Result

----+----1

select put (’XYZ’,$char.); XYZ

Page 47: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � $HEXw. Format 43

$HEXw. Format

Converts character data to hexadecimal representation.

Category: Character

Alignment: left

Syntax$HEXw.

Syntax Description

wspecifies the width of the output field.

Default: The default width is calculated based on the length of the variable to beprinted.

Range: 1–32767

Tip: To ensure that SAS writes the full hexadecimal equivalent of your data, makew twice the length of the variable or field that you want to represent.

Tip: If w is greater than twice the length of the variable that you want to represent,$HEXw. pads it with blanks.

DetailsThe $HEXw. format converts each character into two hexadecimal characters. Eachblank counts as one character, including trailing blanks.

ComparisonThe HEXw. format converts real binary numbers to their hexadecimal equivalent.

Examples

Statement Result

select put (’AB’,$hex5.);

----+----1----+----2

4142

See AlsoFormats:

“HEXw. Format” on page 78

Page 48: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

44 $OCTALw. Format � Chapter 4

$OCTALw. Format

Converts character data to octal representation.

Category: CharacterAlignment: left

Syntax$OCTALw.

Syntax Description

wspecifies the width of the output field.Default: The default width is calculated based on the length of the variable to be

printed.Range: 1–32767Tip: Because each character value generates three octal characters, increase the

value of w by three times the length of the character value.

ComparisonsThe $OCTALw. format converts character values to the octal representation of theircharacter codes. The OCTALw. format converts numeric values to octal representation.

Examples

Statements Results

----+----1----+----2

select put (’art’, $octal15.); 141162164040040

select put (’rice’, $octal15.); 162151143145040

select put (’bank’, $octal15.); 162151143145040

See AlsoFormats:“OCTALw. Format” on page 96

$QUOTEw. Format

Writes data values that are enclosed in single quotation marks.

Page 49: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � $QUOTEw. Format 45

Category: CharacterAlignment: left

Syntax$QUOTEw.

Syntax Description

wspecifies the width of the output field.Default: 2 if the length of the variable is undefined; otherwise, the length of the

variable + 2Range: 2–32767

Tip: Make w wide enough to include the left and right quotation marks.

DetailsWhen you use the $QUOTEw. format, all literals must be in single quotation marks.

The following list describes the output that SAS produces when you use the$QUOTEw. format.

� If your data value is not enclosed in quotation marks, SAS encloses the output indouble quotation marks.

� If your data value is not enclosed in quotation marks, but the value contains asingle quotation mark, SAS

� encloses the data value in double quotation marks

� does not change the single quotation mark.

� If your data value begins and ends with single quotation marks, and the valuecontains double quotation marks, SAS

� encloses the data value in double quotation marks� duplicates the double quotation marks that are found in the data value

� does not change the single quotation marks.

� If your data value begins and ends with single quotation marks, and the valuecontains two single contiguous quotation marks, SAS

� encloses the value in double quotation marks

� does not change the single quotation marks.

� If your data value begins and ends with single quotation marks, and contains bothdouble quotation marks and single, contiguous quotation marks, SAS

� encloses the value in double quotation marks� duplicates the double quotation marks that are found in the data value

� does not change the single quotation marks.

� If the length of the target field is not large enough to contain the string and itsquotation marks, SAS returns all blanks.

Page 50: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

46 $REVERJw. Format � Chapter 4

Examples

Statements Results

----+----1

select put(’SAS’,$quote.);"SAS"

select put(’SAS’’s’,$quote.);"SAS’s"

select put(’ad’’verb’,$quote16.); "ad’verb"

select put(’"ad" "verb"’,$quote16.); """ad""""verb"""

select put(’"ad"’’"verb"’,$quote20); """ad""’""verb"""

$REVERJw. Format

Writes character data in reverse order and preserves blanks.

Category: CharacterAlignment: right

Syntax$REVERJw.

Syntax Description

wspecifies the width of the output field.Default: 1 if w is not specifiedRange: 1–32767

ComparisonsThe $REVERJw. format is similar to the $REVERSw. format except that $REVERSw.left aligns the result by trimming all leading blanks.

Page 51: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � $REVERSw. Format 47

Examples

Statements* Results*

----+----1

select put(’ABCD###’,$reverj7.); ###DCBA

select put(’###ABCD’,$reverj7.); DCBA###

* The character # represents a blank space.

See AlsoFormats:“$REVERSw. Format” on page 47

$REVERSw. FormatWrites character data in reverse order and left aligns.

Category: CharacterAlignment: left

Syntax$REVERSw.

Syntax Description

wspecifies the width of the output field.Default: 1 if w is not specifiedRange: 1–32767

ComparisonsThe $REVERSw. format is similar to the $REVERJw. format except that $REVERJw.does not left align the result.

Examples

Statements* Results

----+----1

select put(’ABCD###’,$revers7); DCBA

select put(’###ABCD’,$revers7.); DCBA

* The character # represents a blank space.

Page 52: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

48 $UPCASEw. Format � Chapter 4

See AlsoFormats:“$REVERJw. Format” on page 46

$UPCASEw. Format

Converts character data to uppercase.

Category: CharacterAlignment: left

Syntax$UPCASEw.

Syntax Description

wspecifies the width of the output field.Default: 8 if the length of the variable is undefined; otherwise, the length of the

variable.Range: 1–32767

DetailsSpecial characters, such as hyphens and other symbols, are not altered.

Examples

Statement Result

----+----1

select put(’coxe-ryan’,upcase9.); COXE-RYAN

$w. Format

Writes standard character data.

Page 53: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � BESTw. Format 49

Category: CharacterAlignment: leftAlias: $Fw.

Syntax$w.

Syntax Description

wspecifies the width of the output field.Default: 1 if the length of the variable is undefined; otherwise, the length of the

variableRange: 1–32767

ComparisonsThe $Fw. format, $w. format, and the $CHARw. format are identical, and they do nottrim leading blanks.

Examples

Statements* Results*

----+----1----+----2

select put(’#Cary’,$5.); #Cary

select put(’#Cary’,$f5.); #Cary

select put(Carolina,$5.); Carol

* The character # represents a blank space.

BESTw. Format

SAS chooses the best notation.

Category: NumericAlignment: right

SyntaxBESTw.

Page 54: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

50 BESTw. Format � Chapter 4

Syntax Description

wspecifies the width of the output field.Default: 12Tip: If you print numbers between 0 and .01 exclusively, then use a field width of at

least 7 to avoid excessive rounding. If you print numbers between 0 and -.01exclusively, then use a field width of at least 8.

Range: 1–32

DetailsThe BESTw. format is the default format for writing numeric values. When there is noformat specification, SAS chooses the format that provides the most information aboutthe value according to the available field width. BESTw. rounds the value, and if SAScan display at least one significant digit in the decimal portion, within the widthspecified, BESTw. produces the result in decimal. Otherwise, it produces the result inscientific notation. SAS always stores the complete value regardless of the format thatyou use to represent it.

Comparisons� The BESTw. format writes as many significant digits as possible in the output

field, but if the numbers vary in magnitude, the decimal points do not line up.Integers print without a decimal.

� The Dw.p format writes numbers with the desired precision and more alignmentthan the BESTw. format

Examples

Statements Results

----+----1----+----2

select put(1257000,best6.); 1.26E6

select put(1257000,best3.); 1E6

See AlsoFormats:“Dw.p Format” on page 55

Page 55: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � BESTDw.p Format 51

BESTDw.p Format

Prints numeric values, lining up decimal places for values of similar magnitude, and printsintegers without decimals.

Category: Numeric

Alignment: right

SyntaxBESTDw. [ p ]

Syntax Description

wspecifies the width of the output field.

Default: 12Range: 1–32

pspecifies the precision.Default: 3

Range: 0 to w–1Requirement: must be less than w

Tip: If p is omitted or is specified as 0, then p is set to 3.

DetailsThe BESTDw.p format writes numbers so that the decimal point aligns in groups ofvalues with similar magnitude. Integers are printed without a decimal point. Largervalues of p print the data values with more precision and potentially more shifts in thedecimal point alignment. Smaller values of p print the data values with less precisionand a greater chance of decimal point alignment.

The format chooses the number of decimal places to print for ranges of values, evenwhen the underlying values can be represented with fewer decimal places.

Comparisons� The BESTw. format writes as many significant digits as possible in the output

field, but if the numbers vary in magnitude, the decimal points do not line up.Integers print without a decimal.

� The Dw.p format writes numbers with the desired precision and more alignmentthan the BESTw format.

� The BESTDw.p format is a combination of the BESTw. format and the Dw.pformat in that it formats all numeric data, and it does a better job of aligningdecimals than the BESTw. format.

� The w.d format aligns decimal points, if possible, but it does not necessarily showthe same precision for all numbers.

Page 56: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

52 BINARYw. Format � Chapter 4

Examples

Statements Results

----+----1----+

select put (12345, bestd14.);12345

select put (123.45, bestd14.); 123.4500000

select put (1.2345, bestd14.); 1.2345000

select put (.12345, bestd14.);0.1234500

select put (1.23456789, bestd14.); 1.23456789

See AlsoFormats:“BESTw. Format” on page 49“Dw.p Format” on page 55“w.d Format” on page 109

BINARYw. Format

Converts numeric values to binary representation.

Category: NumericAlignment: left

SyntaxBINARYw.

Syntax Description

wspecifies the width of the output field.Default: 8Range: 1–64

ComparisonsBINARYw. converts numeric values to binary representation. The $BINARYw. formatconverts character values to binary representation.

Page 57: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � COMMAw.d Format 53

Examples

Statements Results

----+----1

select put (123.45, binary8.); 01111011

select put (123, binary8.); 01111011

select put (--123, binary8.); 10000101

COMMAw.d Format

Writes numeric values with a comma that separates every three digits and a period that separatesthe decimal fraction.

Category: Numeric

Alignment: right

SyntaxCOMMAw. [ d ]

Syntax Description

wspecifies the width of the output field.

Default: 6

Range: 1–32

Tip: Make w wide enough to write the numeric values, the commas, and theoptional decimal point.

dspecifies the number of digits to the right of the decimal point in the numeric value.

Range: 0–31

Requirement: must be less than w

Comparisons� The COMMAw.d format is similar to the COMMAXw.d format, but the

COMMAXw.d format reverses the roles of the decimal point and the comma. Thisconvention is common in European countries.

� The COMMAw.d format is similar to the DOLLARw.d format except that theCOMMAw.d format does not print a leading dollar sign.

Page 58: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

54 COMMAXw.d Format � Chapter 4

Examples

Statements Results

----+----1----+----2

select put (23451.23,comma10.2); 23,451.23

select put (123451.234,comma10.2); 123,451.23

See AlsoFormats:“COMMAXw.d Format” on page 54“DOLLARw.d Format” on page 64

COMMAXw.d Format

Writes numeric values with a period that separates every three digits and a comma that separatesthe decimal fraction.

Category: NumericAlignment: right

SyntaxCOMMAX [ w ].d

Syntax Description

wspecifies the width of the output field.Default: 6Range: 1–32Tip: Make w wide enough to write the numeric values, the commas, and the

optional decimal point.

dspecifies the number of digits to the right of the decimal point in the numeric value.Range: 0–31Requirement: must be less than w

ComparisonsThe COMMAw.d format is similar to the COMMAXw.d format, but the COMMAXw.dformat reverses the roles of the decimal point and the comma. This convention iscommon in European countries.

Page 59: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � Dw.p Format 55

Examples

Statements Results

----+----1----+----2

select put (23451.23,commax10.2); 23.451,23

select put (123451.234,commax10.2); 123.451,23

See AlsoFormats:“COMMAw.d Format” on page 53

Dw.p Format

Prints variables, possibly with a great range of values, lining up decimal places for values ofsimilar magnitude.

Category: NumericAlignment: right

SyntaxD [ w ]. [ d ]

Syntax Description

wspecifies the width of the output field.Default: 12Range: 1–32

pspecifies the significant digits.Default: 3Range: 0–16Requirement: must be less than w

DetailsThe Dw.p format writes numbers so that the decimal point aligns in groups of valueswith similar magnitude. Larger values of p print the data values with more precisionand potentially more shifts in the decimal point alignment. Smaller values of p printthe data values with less precision and a greater chance of decimal point alignment.

Page 60: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

56 DATEw. Format � Chapter 4

Comparisons� The BESTw. format writes as many significant digits as possible in the output

field, but if the numbers vary in magnitude, the decimal points do not line up.

� Dw.p writes numbers with the desired precision and more alignment than BESTw.

Examples

Statements Results

----+----1----+----2

select put (12345,d10.4); 12345.0

select put (1234.5,d10.4); 1234.5

select put (123.45,d10.4); 123.45000

select put (12.345,d10.4); 12.34500

select put (1.2345,d10.4); 1.23450

select put (.12345,d10.4); 0.12345

See AlsoFormats:

“BESTw. Format” on page 49

DATEw. Format

Writes SAS date values in the form ddmmmyy, ddmmmyyyy, or dd–mmm–yyyy.

Category: Date and Time

Alignment: right

SyntaxDATEw.

Syntax Description

wspecifies the width of the output field.

Default: 7

Range: 5–9

Tip: Use a width of 9 to print a 4–digit year.

Page 61: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DATEAMPMw.d Format 57

DetailsThe DATEw. format writes SAS date values in the form ddmmmyy, ddmmmyyyy, ordd–mmm–yyyy where

ddis an integer that represents the day of the month.

mmmis the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

Note: SAS calculates date values based on the number of days since January 1,1960. �

Examples

The example table uses the input value of 17241, which is the SAS date value thatcorresponds to March 16, 2007.

Statements Results

----+----1----+

select put (17241,date5.); 16MAR

select put (17241,date6.); 16MAR

select put (17241,date7.); 16MAR07

select put (17241,date8.); 16MAR07

select put (17241,date9.); 16MAR2007

DATEAMPMw.d Format

Writes SAS datetime values in the form ddmmmyy:hh:mm:ss.ss with AM or PM.

Category: Date and TimeAlignment: right

SyntaxDATEAMPMw. [ d ]

Syntax Description

wspecifies the width of the output field.

Page 62: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

58 DATEAMPMw.d Format � Chapter 4

Default: 19Range: 7–40Tip: SAS requires a minimum w value of 13 to write AM or PM. For widths

between 10 and 12, SAS writes a 24-hour clock time.

dspecifies the number of digits to the right of the decimal point in the seconds value.Requirement: must be less than wRange: 0–39

Note: If w–d< 17, SAS truncates the decimal values. �

DetailsThe DATEAMPMw.d format writes SAS datetime values in the formddmmmyy:hh:mm:ss.ss, where

ddis an integer that represents the day of the month.

mmmis the first three letters of the month name.

yyis a two-digit integer that represents the year.

hhis an integer that represents the hour.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

ComparisonsThe DATETIMEw.d format is similar to the DATEAMPMw.d format except thatDATETIMEw.d does not print AM or PM at the end of the time.

Examples

The example table uses the input value of 1489955694, which is the SAS datetimevalue that corresponds to 08:34:54 PM on March 19, 2007.

Statements Results

----+----1----+----2----+

select put (1489955694,dateampm.); 19MAR07:08:34:54 PM

select put (1489955694,dateampm7.); 19MAR07

select put (1489955694,dateampm10.); 19MAR07:20

select put (1489955694,dateampm13.); 19MAR07:08 PM

select put (1489955694,dateampm22.2.); 19MAR07:08:34:54.00 PM

Page 63: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DATETIMEw.d Format 59

See Also

Formats:

“DATETIMEw.d Format” on page 59

DATETIMEw.d Format

Writes SAS datetime values in the form ddmmmyy:hh:mm:ss.ss.

Category: Date and Time

Alignment: right

SyntaxDATETIMEw. [ d ]

Syntax Description

wspecifies the width of the output field.

Default: 16

Range: 7–40

Tip: SAS requires a minimum w value of 16 to write a SAS datetime value with thedate, hour, and seconds. Add an additional two places to w and a value to d toreturn values with optional decimal fractions of seconds.

dspecifies the number of digits to the right of the decimal point in the seconds value.

Requirement: must be less than w

Range: 0–39

Note: If w–d< 17, SAS truncates the decimal values. �

DetailsThe DATETIMEw.d format writes SAS datetime values in the formddmmmyy:hh:mm:ss.ss, where

ddis an integer that represents the day of the month.

mmmis the first three letters of the month name.

yyis a two-digit integer that represents the year.

Page 64: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

60 DAYw. Format � Chapter 4

hhis an integer that represents the hour in 24–hour clock time.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

ComparisonsThe DATEAMPMw.d format is similar to the DATETIMEw.d format except thatDATEAMPMw.d prints AM or PM at the end of the time.

Examples

The example table uses the input value of 1510285759, which is the SAS datetimevalue that corresponds to 3:49:19 AM on November 10, 2007.

Statements Results

----+----1----+----2

select put (1510285759,datetime.); 10NOV07:03:49:19

select put (1510285759,datetime7.); 10NOV07

select put (1510285759,datetime12.); 10NOV07:03

select put (1510285759,datetime18.); 10NOV07:03:49:19

select put (1510285759,datetime18.1); 10NOV07:03:49:19.0

select put (1510285759,datetime19.); 10NOV2007:03:49:19

select put (1510285759,datetime20.1); 10NOV2007:03:49:19.0

select put (1510285759,datetime21.2); 10NOV2007:03:49:19.00

See Also

Formats:

“DATEAMPMw.d Format” on page 57

DAYw. Format

Writes SAS date values as the day of the month.

Category: Date and Time

Alignment: right

Page 65: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DDMMYYw. Format 61

SyntaxDAYw.

Syntax Description

wspecifies the width of the output field.

Default: 2Range: 2–32

Examples

The example table uses the input value of 17331, which is the SAS date value thatcorresponds to June 14, 2007.

Statement Result

----+----1

select put(17331,day2.); 14

DDMMYYw. Format

Writes SAS date values in the form ddmm<yy>yy or dd/mm/<yy>yy, where a forward slash is theseparator and the year appears as either 2 or 4 digits.

Category: Date and TimeAlignment: right

SyntaxDDMMYYw.

Syntax Description

wspecifies the width of the output field.

Default: 8Range: 2–10

Page 66: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

62 DDMMYYw. Format � Chapter 4

Interaction: When w has a value of from 2 to 5, the date appears with as much ofthe day and the month as possible. When w is 7, the date appears as a two-digityear without slashes.

DetailsThe DDMMYYw. format writes SAS date values in the form ddmm<yy>yy or dd/mm/<yy>yy, where

ddis an integer that represents the day of the month.

/is the separator.

mmis an integer that represents the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

Examples

The following examples use the input value of 17524, which is the SAS date valuethat corresponds to December 24, 2007.

Statements Results

----+----1----+

select put(17524,ddmmyy.); 24/12/07

select put(17524,ddmmyy5.); 24/12

select put(17524,ddmmyy6.); 241207

select put(17524,ddmmyy7.); 241207

select put(17524,ddmmyy8.); 24/12/07

select put(17524,ddmmyy10.); 24/12/2007

See Also

Formats:“DATEw. Format” on page 56“DDMMYYxw. Format” on page 63“MMDDYYw. Format” on page 84“YYMMDDw. Format” on page 118

Functions:“DAY Function” on page 153“MONTH Function” on page 171“YEAR Function” on page 199

Page 67: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DDMMYYxw. Format 63

DDMMYYxw. Format

Writes SAS date values in the form ddmm<yy>yy or ddXmmX<yy>yy, where X represents aspecified separator and the year appears as either 2 or 4 digits.

Category: Date and TimeAlignment: right

SyntaxDDMMYYxw.

Syntax Description

xidentifies a separator or specifies that no separator appear between the day, themonth, and the year. Valid values for x are:

Bseparates with a blank

Cseparates with a colon

Dseparates with a dash

Nindicates no separator

Pseparates with a period

Sseparates with a slash.

wspecifies the width of the output field.Default: 8Range: 2–10Interaction: When w has a value of from 2 to 5, the date appears with as much of

the day and the month as possible. When w is 7, the date appears as a two-digityear without separators.

Interaction: When x has a value of N, the width range changes to 2–8.

DetailsThe DDMMYYxw. format writes SAS date values in the form ddmm<yy>yy orddXmmX<yy>yy, where

ddis an integer that represents the day of the month.

Page 68: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

64 DOLLARw.d Format � Chapter 4

Xis a specified separator.

mmis an integer that represents the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

Examples

The following examples use the input value of 17241, which is the SAS date valuethat corresponds to March 16, 2007.

Statements Results

----+----1----+

select put(17241,ddmmyyc5.); 16:03

select put(17241,ddmmyyd8.); 16-03-07

select put(17241,ddmmyyn8.); 16032007

select put(17241,ddmmyyp10.); 16.03.2007

See Also

Formats:

“DATEw. Format” on page 56“DDMMYYw. Format” on page 61“MMDDYYxw. Format” on page 86

“YYMMDDxw. Format” on page 119

Functions:“DAY Function” on page 153

“MONTH Function” on page 171“YEAR Function” on page 199

DOLLARw.d Format

Writes numeric values with a leading dollar sign, a comma that separates every three digits, anda period that separates the decimal fraction.

Category: Numeric

Alignment: right

Page 69: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DOLLARw.d Format 65

Syntax

DOLLARw. [ d ]

Syntax Description

wspecifies the width of the output field.

Default: 6

Range: 2–32

dspecifies the number of digits to the right of the decimal point in the numeric value.

Range: 0–31

Requirement: must be less than w

Details

The DOLLARw.d format writes numeric values with a leading dollar sign, a commathat separates every three digits, and a period that separates the decimal fraction.

The hexadecimal representation of the code for the dollar sign character ($) is 5B onEBCDIC systems and 24 on ASCII systems. The monetary character that these codesrepresent might be different in other countries, but DOLLARw.d always produces oneof these codes.

Comparisons

� The DOLLARw.d format is similar to the DOLLARXw.d format, but theDOLLARXw.d format reverses the roles of the decimal point and the comma. Thisconvention is common in European countries.

� The DOLLARw.d format is the same as the COMMAw.d format except that theCOMMAw.d format does not write a leading dollar sign.

Examples

Statement Result

----+----1----+

select put(1254.71,dollar10.2); $1,254.71

See Also

Formats:

“COMMAw.d Format” on page 53

“DOLLARXw.d Format” on page 66

Page 70: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

66 DOLLARXw.d Format � Chapter 4

DOLLARXw.d FormatWrites numeric values with a leading dollar sign, a period that separates every three digits, and acomma that separates the decimal fraction.

Category: NumericAlignment: right

SyntaxDOLLARXw. [ d ]

Syntax Description

wspecifies the width of the output field.Default: 6Range: 2–32

dspecifies the number of digits to the right of the decimal point in the numeric value.Default: 0Range: 2–31Requirement: must be less than w

DetailsThe DOLLARXw.d format writes the numeric values with a leading dollar sign, acomma that separates every three digits, and a period that separates the decimalfraction.

The hexadecimal representation of the code for the dollar sign character ($) is 5B onEBCDIC systems and 24 on ASCII systems. The monetary character that these codesrepresent might be different in other countries, but DOLLARXw.d always produces oneof these codes.

Comparisons� The DOLLARXw.d format is similar to the DOLLARw.d format, but the

DOLLARXw.d format reverses the roles of the decimal point and the comma. Thisconvention is common in European countries.

� The DOLLARXw.d format is the same as the COMMAXw.d format except that theCOMMAw.d format does not write a leading dollar sign.

Examples

Statement Result

----+----1----+

select put(1254.71,dollarx10.2); $1.254,71

Page 71: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DOWNAMEw. Format 67

See AlsoFormats:“COMMAXw.d Format” on page 54“DOLLARw.d Format” on page 64

DOWNAMEw. Format

Writes SAS date values as the name of the day of the week.

Category: Date and TimeAlignment: right

SyntaxDOWNAMEw.

Syntax Description

wspecifies the width of the output field.Default: 9Range: 1–32Tip: If you omit w, SAS prints the entire name of the day.

DetailsIf necessary, SAS truncates the name of the day to fit the format width. For example,the DOWNAME2. prints the first two letters of the day name.

Examples

The example table uses the input value of 17241, which is the SAS date value thatcorresponds to March 16, 2007.

Statement Result

----+----1

select put(17241,downame.); Friday

Page 72: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

68 DTDATEw. Format � Chapter 4

See Also

Formats:“WEEKDAYw. Format” on page 112

DTDATEw. FormatExpects a SAS datetime value as input and writes the SAS date values in the form ddmmmyy orddmmmyyyy.

Category: Date and TimeAlignment: right

SyntaxDTDATEw.

Syntax Description

wspecifies the width of the output field.Default: 7Range: 5–9Tip: Use a width of 9 to print a 4–digit year.

DetailsThe DTDATEw. format writes SAS date values in the form ddmmmyy or ddmmmyyyy,where

ddis an integer that represents the day of the month.

mmmare the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

ComparisonsThe DTDATEw. format produces the same type of output that the DATEw. formatproduces. The difference is that the DTDATEw. format requires a SAS datetime value.

Examples

The example table uses the input value of 1510285759, which is the SAS datetimevalue that corresponds to 3:49:19 AM on November 10, 2007, and prints both atwo-digit and a four-digit year for the DTDATEw. format.

Page 73: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DTMONYYw. Format 69

Statements Results

----+----1

select put(1510285759,dtdate.); 10NOV07

select put(1510285759,dtdate9.); 10NOV2007

See Also

Formats:“DATEw. Format” on page 56

DTMONYYw. FormatWrites the date part of a SAS datetime value as the month and year in the form mmmyy ormmmyyyy.

Category: Date and TimeAlignment: right

SyntaxDTMONYYw.

Syntax Description

wspecifies the width of the output field.Default: 5Range: 5–7

DetailsThe DTMONYYw. format writes SAS datetime values in the form mmmyy ormmmyyyy, where

mmmis the first three letters of the month name.

yy or yyyyis a two–digit or four-digit integer that represents the year.

ComparisonsThe DTMONYYw. format and the MONYYw. format are similar in that they bothwrite date values. The difference is that DTMONYYw. expects a SAS datetime value asinput, and MONYYw. expects a SAS date value.

Page 74: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

70 DTWKDATXw. Format � Chapter 4

Examples

The example table uses as input the value 1539756532, which is the SAS datetimevalue that corresponds to October 16, 2008, at 06:08:52 AM.

Statements Results

----+----1

select put(1539756532,dtmonyy.); OCT08

select put(1539756532,dtmonyy5.); OCT08

select put(1539756532,dtmonyy6.); OCT08

select put(1539756532,dtmonyy7.); OCT2008

See Also

Formats:“DATETIMEw.d Format” on page 59“MONYYw. Format” on page 93

DTWKDATXw. Format

Writes the date part of a SAS datetime value as the day of the week and the date in the formday-of-week, dd month-name yy (or yyyy).

Category: Date and TimeAlignment: right

SyntaxDTWKDATXw.

Syntax Description

wspecifies the width of the output field.Default: 29Range: 3–37

DetailsThe DTWKDATXw. format writes SAS date values in the form day-of-week, ddmonth-name, yy or yyyy, where

Page 75: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � DTYEARw. Format 71

day-of-weekis either the first three letters of the day name or the entire day name.

ddis an integer that represents the day of the month.

month-nameis either the first three letters of the month name or the entire month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

ComparisonsThe DTWKDATXw. format is similar to the WEEKDATXw. format in that they bothwrite date values. The difference is that DTWKDATXw. expects a SAS datetime valueas input, and WEEKDATXw. expects a SAS date value.

Examples

The example table uses as input the value 1539756532, which is the SAS datetimevalue that corresponds to October 16, 2008, at 06:08:52 AM.

Statements Results

----+----1----+----2----+----3

select put(1539756532,dtwkdatx.); Thursday, 16 October 2008

select put(1539756532,dtwkdatx3.); Thu

select put(1539756532,dtwkdatx8.); Thu

select put(1539756532,dtwkdatx25.); Thursday, 16 Oct 2008

See AlsoFormats:

“WEEKDATXw. Format” on page 111

DTYEARw. Format

Writes the date part of a SAS datetime value as the year in the form yy or yyyy.

Category: Date and Time

Alignment: right

SyntaxDTYEARw.

Page 76: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

72 DTYYQCw. Format � Chapter 4

Syntax Description

wspecifies the width of the output field.Default: 4Range: 2–4

ComparisonsThe DTYEARw. format is similar to the YEARw. format in that they both write datevalues. The difference is that DTYEARw. expects a SAS datetime value as input, andYEARw. expects a SAS date value.

Examples

The example table uses as input the value 1539756532, which is the SAS datetimevalue that corresponds to October 16, 2008, at 06:08:52 AM.

Statements Results

----+----1

select put(1539756532,dtyear.); 2008

select put(1539756532,dtyear2.); 08

select put(1539756532,dtyear3.); 08

select put(1539756532,dtyear4.); 2008

See Also

Formats:“DATETIMEw.d Format” on page 59“YEARw. Format” on page 113

DTYYQCw. Format

Writes the date part of a SAS datetime value as the year and the quarter and separates them witha colon (:).

Category: Date and TimeAlignment: right

SyntaxDTYYQCw.

Page 77: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � Ew. Format 73

Syntax Description

wspecifies the width of the output field.

Default: 4

Range: 4–6

DetailsThe DTYYQCw. format writes SAS datetime values in the form yy or yyyy, followed bya colon (:) and the numeric value for the quarter of the year.

Examples

The example table uses as input the value 1539756532, which is the SAS datetimevalue that corresponds to October 16, 2008, at 06:08:52 PM.

Statements Results

----+----1

select put(1539756532,dtyyqc.); 08:4

select put(1539756532,dtyyqc4.); 08:4

select put(1539756532,dtyyqc5.); 08:4

select put(1539756532,dtyyqc6.); 2008:4

See AlsoFormats:

“DATETIMEw.d Format” on page 59

Ew. Format

Writes numeric values in scientific notation.

Category: Numeric

Alignment: right

SyntaxEw.

Page 78: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

74 EUROw.d Format � Chapter 4

Syntax Description

wspecifies the width of the output field.Default: 12Range: 7–32

DetailsSAS reserves the first column of the result for a minus sign.

Examples

Statements Results

----+----1----+

select put(1257,e10.); 1.257E+03

select put(-1257,e10.); -1.257E+03

EUROw.d Format

Writes numeric values with a leading euro symbol (E), a comma that separates every three digits,and a period that separates the decimal fraction.

Category: NumericAlignment: right

SyntaxEUROw.d

Syntax Description

wspecifies the width of the output field.Default: 6Range: 1-32Tip: If you want the euro symbol to be part of the output, be sure to choose an

adequate width.

dspecifies the number of digits to the right of the decimal point in the numeric value.

Page 79: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � EUROXw.d Format 75

Default: 0Range: 0-31Requirement: must be less than w

Comparisons� The EUROw.d format is similar to the EUROXw.d format, but EUROXw.d format

reverses the roles of the decimal point and the comma. This convention is commonin European countries.

� The EUROw.d format is similar to the DOLLARw.d format, except thatDOLLARw.d format writes a leading dollar sign instead of the euro symbol.

Note: The EUROw.d format uses the euro character (U+20AC). If you use the DBCSversion of SAS and an encoding that does not support the euro character, an error willoccur. To prevent this error, change your session encoding to an encoding that supportsthe euro character. �

Examples

These examples use 1254.71 as the value of amount.

Statements Results

----+----1----+----2----+----3

select put(1254.71,euro10.2); E1,254.71

select put(1254.71,euro5.); 1,255

select put(1254.71,euro9.2); E1,254.71

select put(1254.71,euro15.3); E1,254.710

See Also

Formats:“EUROXw.d Format” on page 75

EUROXw.d Format

Writes numeric values with a leading euro symbol (E), a period that separates every three digits,and a comma that separates the decimal fraction.

Category: NumericAlignment: right

SyntaxEUROXw.d

Page 80: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

76 EUROXw.d Format � Chapter 4

Syntax Description

wspecifies the width of the output field.

Default: 6

Range: 1-32

Tip: If you want the euro symbol to be part of the output, be sure to choose anadequate width.

dspecifies the number of digits to the right of the decimal point in the numeric value.

Default: 0

Range: 0-31

Requirement: must be less than w

Comparisons� The EUROXw.d format is similar to the EUROw.d format, but EUROw.d format

reverses the roles of the comma and the decimal point. This convention is commonin English–speaking countries.

� The EUROXw.d format is similar to the DOLLARXw.d format, except thatDOLLARXw.d format writes a leading dollar sign instead of the euro symbol.

Note: The EUROXw.d format uses the euro character (U+20AC). If you use theDBCS version of SAS and an encoding that does not support the euro character, anerror will occur. To prevent this error, change your session encoding to an encoding thatsupports the euro character. �

Examples

These examples use 1254.71 as the value of amount.

Statements Results

----+----1----+----2----+----3

select put(1254.71,eurox10.2); E1.254,71

select put(1254.71,eurox5.); 1.255

select put(1254.71,eurox9.2); E1.254,71

select put(1254.71,eurox15.3); E1.254,710

See Also

Formats:

“EUROw.d Format” on page 74

Page 81: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � FLOATw.d Format 77

FLOATw.d Format

Generates a native single-precision, floating-point value by multiplying a number by 10 raised tothe d th power.

Category: NumericAlignment: left

SyntaxFLOATw. [ d ]

Syntax Description

wspecifies the width of the output field.Requirement: width must be 4

dspecifies the power of 10 by which to multiply the value.Default: 0Range: 0-31

DetailsThis format is useful in operating environments where a float value is not the same asa truncated double. Values that are written by FLOAT4. typically are those meant tobe read by some other external program that runs in your operating environment andthat expects these single-precision values. If the value that is to be formatted is amissing value, or if it is out-of-range for a native single-precision, floating-point value, asingle-precision value of zero is generated.

Examples

Statement Result*

select put(1,float4.); 0000803F

* The result is a hexadecimal representation of a binary number that is stored in IEEE form.

Page 82: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

78 FRACTw. Format � Chapter 4

FRACTw. Format

Converts numeric values to fractions.

Category: Numeric

Alignment: right

SyntaxFRACTw.

Syntax Description

wspecifies the width of the output field.

Default: 10

Range: 4–32

DetailsDividing the number 1 by 3 produces the value 0.33333333. To write this value as 1/3,use the FRACTw. format. FRACTw. writes fractions in reduced form, that is, 1/2instead of 50/100.

Examples

Statements Results

----+----1

select put(0.6666666667,fract8.); 2/3

select put(0.2784,fract8.); 174/625

HEXw. Format

Converts real binary (floating-point) values to hexadecimal representation.

Category: Numeric

Alignment: left

Page 83: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � HEXw. Format 79

Syntax

HEXw.

Syntax Description

wspecifies the width of the output field.

Default: 8

Range: 1–16

Tip: If w< 16, the HEXw. format converts real binary numbers to fixed-pointintegers before writing them as hexadecimal characters. It also writes negativenumbers in two’s complement notation, and right aligns digits. If w is 16, HEXw.displays floating-point values in their hexadecimal form.

DetailsIn any operating environment, the least significant byte written by HEXw. is therightmost byte. Some operating environments store integers with the least significantdigit as the first byte. The HEXw. format produces consistent results in any operatingenvironment regardless of the order of significance by byte.

Note: Different operating environments store floating-point values in different ways.However, the HEX16. format writes hexadecimal representations of floating-pointvalues with consistent results in the same way that your operating environment storesthem. �

Comparisons

The HEXw. numeric format and the $HEXw. character format both generate thehexadecimal equivalent of values.

Examples

Statements Results

----+----1----+----2

select put(35.4, hex8.); 00000023

select put(88, hex8.); 00000058

select put(2.33, hex8.); 00000002

select put(-150, hex8.); FFFFFF6A

See Also

Formats:

“$HEXw. Format” on page 43

Page 84: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

80 HHMMw.d Format � Chapter 4

HHMMw.d Format

Writes SAS time values as hours and minutes in the form hh:mm.

Category: Date and Time

Alignment: right

SyntaxHHMMw. [ d ]

Syntax Description

wspecifies the width of the output field.Default: 5

Range: 2–20

dspecifies the number of digits to the right of the decimal point in the minutes value.The digits to the right of the decimal point specify a fraction of a minute.Default: 0

Range: 0–19

Requirement: must be less than w

DetailsThe HHMMw.d format writes SAS datetime values in the form hh:mm, where

hhis an integer.

mmis the number of minutes that range from 00 through 59.

SAS rounds hours and minutes that are based on the value of seconds in a SAS timevalue.

ComparisonsThe HHMMw.d format is similar to the TIMEw.d format except that the HHMMw.dformat does not print seconds.

The HHMMw.d format and the TIMEw.d format write a leading blank for thesingle–hour digit. The TODw.d format writes a leading zero for a single–hour digit.

Examples

The example table uses the input value of 46796, which is the SAS time value thatcorresponds to 12:59:56 PM.

Page 85: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � HOURw.d Format 81

Statements Results

----+----1

select put(46796,hhmm.); 13:00

select put(46796,hhmm8.2); 12:59.93

In the first example, SAS rounds up the time value four seconds based on the value ofseconds in the SAS time value. In the second example, by adding a decimalspecification of 2 to the format shows that fifty-six seconds is 93% of a minute.

See Also

Formats:“HOURw.d Format” on page 81“MMSSw.d Format” on page 87“TIMEw.d Format” on page 104

Functions:“HOUR Function” on page 158“MINUTE Function” on page 169“SECOND Function” on page 181

HOURw.d Format

Writes SAS time values as hours and decimal fractions of hours.

Category: Date and TimeAlignment: right

SyntaxHOURw. [ d ]

Syntax Description

wspecifies the width of the output field.Default: 2Range: 2–20

dspecifies the number of digits to the right of the decimal point in the hour value.Therefore, SAS prints decimal fractions of the hour.

Page 86: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

82 IEEEw.d Format � Chapter 4

Requirement: must be less than wRange: 0-19

DetailsSAS rounds hours based on the value of minutes in the SAS time value.

Examples

The example table uses the input value of 41400, which is the SAS time value thatcorresponds to 11:30 AM.

Statement Result

----+----1

select put(41400,hour4.1); 11.5

See AlsoFormats:“HHMMw.d Format” on page 80“MMSSw.d Format” on page 87“TIMEw.d Format” on page 104“TODw.d Format” on page 107

IEEEw.d Format

Generates an IEEE floating-point value by multiplying a number by 10 raised to the d th power.

Category: NumericAlignment: leftCaution: Large floating-point values and floating-point values that require precisionmight not be identical to the original SAS value when they are written to an IBMmainframe by using the IEEE format and read back into SAS using the IEEE informat.

SyntaxIEEEw. [ d ]

Page 87: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � JULIANw. Format 83

Syntax Description

wspecifies the width of the output field.Default: 8Range: 3–8Tip: If w is 8, an IEEE double-precision, floating-point number is written. If w is 5,

6, or 7, an IEEE double-precision, floating-point number is written, which assumestruncation of the appropriate number of bytes. If w is 4, an IEEE single-precisionfloating-point number is written. If w is 3, an IEEE single-precision, floating-pointnumber is written, which assumes truncation of one byte.

dspecifies to multiply the number by 10d.Default: 0Range: 0–10

DetailsThis format is useful in operating environments where IEEEw.d is the floating-pointrepresentation that is used. In addition, you can use the IEEEw.d format to create filesthat are used by programs in operating environments that use the IEEE floating-pointrepresentation.

Typically, programs generate IEEE values in single-precision (4 bytes) ordouble-precision (8 bytes). Programs perform truncation solely to save space on outputfiles. Machine instructions require that the floating-point number be one of the twolengths. The IEEEw.d format allows other lengths, which enables you to write data tofiles that contain space-saving truncated data.

Examples

Statements Results*

select put(1,ieee4.); 3FF00000

select put(1,ieee5.); 3FF0000000

* The result contains hexadecimal representations of binary numbers stored in IEEE form.

JULIANw. Format

Writes SAS date values as Julian dates in the form yyddd or yyyyddd.

Category: Date and TimeAlignment: left

SyntaxJULIANw.

Page 88: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

84 MMDDYYw. Format � Chapter 4

Syntax Description

wspecifies the width of the output field.

Default: 5

Range: 5–7

Tip: If w is 5, the JULIANw. format writes the date with a two-digit year. If w is 7,the JULIANw. format writes the date with a four-digit year.

DetailsThe JULIANw. format writes SAS date values in the form yyddd or yyyyddd, where

yy or yyyyis a two-digit or four-digit integer that represents the year.

dddis the number of the day, 1–365 (or 1–366 for leap years), in that year.

Examples

The example table uses the input value of 17524, which is the SAS date value thatcorresponds to December 24, 2007 (the 358th day of the year).

Statements Results

----+----1

select put(17524,julian5.); 07358

select put(17524,julian7.); 2007358

MMDDYYw. Format

Writes SAS date values in the form mmdd<yy>yy or mm/dd/<yy>yy, where a forward slash is theseparator and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: right

SyntaxMMDDYYw.

Page 89: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � MMDDYYw. Format 85

Syntax Description

wspecifies the width of the output field.Default: 8Range: 2–10Interaction: When w has a value of from 2 to 5, the date appears with as much of

the month and the day as possible. When w is 7, the date appears as a two-digityear without slashes.

DetailsThe MMDDYYw. format writes SAS date values in the form mmdd<yy>yy or mm/dd/<yy>yy, where

mmis an integer that represents the month.

/is the separator.

ddis an integer that represents the day of the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

Examples

The following examples use the input value of 17830, which is the SAS date valuethat corresponds to October 25, 2008.

Statements Results

----+----1----+

select put(17830,mmddyy2.); 10

select put(17830,mmddyy3.); 10

select put(17830,mmddyy4.); 1025

select put(17830,mmddyy5.); 10/25

select put(17830,mmddyy6.); 102508

select put(17830,mmddyy7.); 102508

select put(17830,mmddyy8.); 10/25/08

select put(17830,mmddyy10.); 10/25/2008

See AlsoFormats:“DATEw. Format” on page 56

Page 90: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

86 MMDDYYxw. Format � Chapter 4

“DDMMYYw. Format” on page 61

“MMDDYYxw. Format” on page 86

“YYMMDDw. Format” on page 118

MMDDYYxw. Format

Writes SAS date values in the form mmdd<yy>yy or mmXddX<yy>yy, where X represents aspecified separator and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: right

SyntaxMMDDYYxw.

Syntax Description

xidentifies a separator or specifies that no separator appear between the month, theday, and the year. Valid values for x are:

Bseparates with a blank

Cseparates with a colon

Dseparates with a dash

Nindicates no separator

Pseparates with a period

Sseparates with a slash.

wspecifies the width of the output field.

Default: 8

Range: 2–10

Interaction: When w has a value of from 2 to 5, the date appears with as much ofthe month and the day as possible. When w is 7, the date appears as a two-digityear without separators.

Interaction: When x has a value of N, the width range changes to 2–8.

Page 91: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � MMSSw.d Format 87

DetailsThe MMDDYYxw. format writes SAS date values in the form mmdd<yy>yy ormmXddX<yy>yy, where

mmis an integer that represents the month.

Xis a specified separator.

ddis an integer that represents the day of the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

Examples

The following examples use the input value of 17827, which is the SAS date valuethat corresponds to October 22, 2008.

Statements Results

----+----1----+

select put(17827,mmddyyc5.); 10:22

select put(17827,mmddyyd8.) 10-22-08

select put(17827,mmddyyn8.); 10222008

select put(17827,mmddyyp10.) 10.22.2008

See AlsoFormats:“DATEw. Format” on page 56“DDMMYYxw. Format” on page 63“MMDDYYw. Format” on page 84“YYMMDDxw. Format” on page 119

MMSSw.d Format

Writes SAS time values as the number of minutes and seconds since midnight.

Category: Date and TimeAlignment: right

SyntaxMMSSw. [ d ]

Page 92: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

88 MMSSw.d Format � Chapter 4

Syntax Description

wspecifies the width of the output field.Default: 5Range: 2–20Tip: Set w to a minimum of 5 to write a value that represents minutes and seconds.

dspecifies the number of digits to the right of the decimal point in the seconds value.Therefore, the SAS time value includes fractional seconds.Range: 0–19Restriction: must be less than w

Examples

The example table uses the SAS input value of 4530.

Statement Result

----+----1

select put(4530,mmss.); 75:30

See AlsoFormats:“HHMMw.d Format” on page 80“TIMEw.d Format” on page 104

Page 93: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � MMYYw. Format 89

MMYYw. Format

Writes SAS date values in the form mmM<yy>yy, where M is the separator and the year appearsas either 2 or 4 digits.

Category: Date and TimeAlignment: right

SyntaxMMYYw.

Syntax Description

wspecifies the width of the output field.Default: 7Range: 5–32Interaction: When w has a value of 5 or 6, the date appears with only the last two

digits of the year. When w is 7 or more, the date appears with a four-digit year.

DetailsThe MMYYw. format writes SAS date values in the form mmM<yy>yy, where

mmis an integer that represents the month.

Mis the character separator.

<yy>yyis a two-digit or four-digit integer that represents the year.

Examples

The following examples use the input value of 17830, which is the SAS date valuethat corresponds to October 25, 2008.

Statements Results

----+----1----+

select put(17830,mmyy5.); 10M08

select put(17830,mmyy6.); 10M08

select put(17830,mmyy7.); 10M2008

select put(17830,mmyy10.); 10M2008

Page 94: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

90 MMYYxw. Format � Chapter 4

See AlsoFormats:“MMYYxw. Format” on page 90“YYMMw. Format” on page 115

MMYYxw. Format

Writes SAS date values in the form mm<yy>yy or mmX<yy>yy, where x in the format name is acharacter that represents the special character that separates the month and the year, which canbe a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can beeither 2 or 4 digits.

Category: Date and TimeAlignment: right

SyntaxMMYYxw.

Syntax Description

xidentifies a separator or specifies that no separator appear between the month andthe year. Valid values for x are

Cseparates with a colon

Dseparates with a dash

Nindicates no separator

Pseparates with a period

Sseparates with a forward slash.

wspecifies the width of the output field.Default: 7Range: 5–32Interaction: When x is set to N, no separator is specified. The width range is then

4–32, and the default changes to 6.Interaction: When x has a value of C, D, P, or S and w has a value of 5 or 6, the

date appears with only the last two digits of the year. When w is 7 or more, thedate appears with a four-digit year.

Page 95: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � MONNAMEw. Format 91

Interaction: When x has a value of N and w has a value of 4 or 5, the date appearswith only the last two digits of the year. When x has a value of N and w is 6 ormore, the date appears with a four-digit year.

DetailsThe MMYYxw. format writes SAS date values in the form mm<yy>yy or mmX<yy>yy,where

mmis an integer that represents the month.

Xis a specified separator.

<yy>yyis a two-digit or four-digit integer that represents the year.

Examples

The following examples use the input value of 17727, which is the SAS date valuethat corresponds to July14, 2008.

Statements Results

----+----1----+

select put(17727,mmyyc5.); 07:08

select put(17727,mmyyd7.); 07-2008

select put(17727,mmyyn4.); 0708

select put(17727,mmyyp8.); 07.2008

select put(17727,mmyys10.); 07/2008

See AlsoFormats:“MMYYw. Format” on page 89“YYMMw. Format” on page 115

MONNAMEw. Format

Writes SAS date values as the name of the month.

Category: Date and TimeAlignment: right

SyntaxMONNAMEw.

Page 96: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

92 MONTHw. Format � Chapter 4

Syntax Description

wspecifies the width of the output field.Default: 9Range: 1–32Tip: Use MONNAME3. to print the first three letters of the month name.

DetailsIf necessary, SAS truncates the name of the month to fit the format width.

Examples

The example table uses the input value of 17596, which is the SAS date value thatcorresponds to March 5, 2008.

Statements Results

----+----1

select put(17596,monname1.); M

select put(17596,monname3.); Mar

select put(17596,monname5.); March

See AlsoFormats:“MONTHw. Format” on page 92

MONTHw. Format

Writes SAS date values as the month of the year.

Category: Date and TimeAlignment: right

SyntaxMONTHw.

Syntax Description

Page 97: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � MONYYw. Format 93

wspecifies the width of the output field.

Default: 2

Range: 1–32

DetailsThe MONTHw. format writes the month (1 through 12) of the year from a SAS datevalue.

Examples

The example table uses the input value of 17776, which is the SAS date value thatcorresponds to September 01, 2008.

Statement Result

----+----1

select put(17776,month.); 9

See AlsoFormats:

“MONNAMEw. Format” on page 91

MONYYw. Format

Writes SAS date values as the month and the year in the form mmmyy or mmmyyyy.

Category: Date and Time

Alignment: right

SyntaxMONYYw.

Syntax Description

wspecifies the width of the output field.

Default: 5

Range: 5–7

Page 98: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

94 NEGPARENw.d Format � Chapter 4

DetailsThe MONYYw. format writes SAS date values in the form mmmyy or mmmyyyy, where

mmmis the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

ComparisonsThe MONYYw. format and the DTMONYYw. format are similar in that they bothwrite date values. The difference is that MONYYw. expects a SAS date value as input,and DTMONYYw. expects a datetime value.

Examples

The example table uses the input value of 17524, which is the SAS date value thatcorresponds to December 24, 2007.

Statements Results

----+----1

select put(17524,monyy5.); DEC07

select put(17524,monyy7.); DEC2007

See Also

Formats:“DTMONYYw. Format” on page 69“DDMMYYw. Format” on page 61“MMDDYYw. Format” on page 84“YYMMDDw. Format” on page 118

Functions:“MONTH Function” on page 171“YEAR Function” on page 199

NEGPARENw.d FormatWrites negative numeric values in parentheses.

Category: NumericAlignment: right

SyntaxNEGPARENw. [ d ]

Page 99: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � NENGOw. Format 95

Syntax Description

wspecifies the width of the output field.Default: 6Range: 1–32

dspecifies the number of digits to the right of the decimal point in the numeric value.Default: 0Range: 0-31

DetailsThe NEGPARENw.d format attempts to right align output values. If the input value isnegative, NEGPARENw.d displays the output by enclosing the value in parentheses, ifthe field that you specify is wide enough. Otherwise, it uses a minus sign to representthe negative value. If the input value is non-negative, NEGPARENw.d displays thevalue with a leading and trailing blank to ensure proper column alignment. It reservesthe last column for a close parenthesis even when the value is positive.

ComparisonsThe NEGPARENw.d format is similar to the COMMAw.d format in that it separatesevery three digits of the value with a comma.

Examples

Statements Results

----+----1----+

select put(100,negparen6.); 100

select put(1000,negparen6.); 1,000

select put(-200,negparen6.); (200)

select put(-2000,negparen8.); (2,000)

NENGOw. Format

Writes SAS date values as Japanese dates in the form e.yymmdd.

Category: Date and TimeAlignment: left

Page 100: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

96 OCTALw. Format � Chapter 4

SyntaxNENGOw.

Syntax Description

wspecifies the width of the output field.Default: 10Range: 2–10

DetailsThe NENGOw. format writes SAS date values in the form e.yymmdd, where

eis the first letter of the name of the emperor (Meiji, Taisho, Showa, or Heisei).

yyis an integer that represents the year.

mmis an integer that represents the month.

ddis an integer that represents the day of the month.

If the width is too small, SAS omits the period.

Examples

The example table uses the input value of 17231, which is the SAS date value thatcorresponds to March 16, 2007.

Statements Results

----+----1

select put(17231,nengo3.); H19

select put(17231,nengo6.); H19/03

select put(17231,nengo8.); H.190316

select put(17231,nengo9.); H19/03/16

select put(17231,nengo10.); H.19/03/16

OCTALw. Format

Converts numeric values to octal representation.

Category: Numeric

Page 101: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � PERCENTw.d Format 97

Alignment: left

SyntaxOCTALw.

Syntax Description

wspecifies the width of the output field.Default: 3Range: 1–24

DetailsIf necessary, the OCTALw. format converts numeric values to integers before displayingthem in octal representation.

ComparisonsOCTALw. converts numeric values to octal representation. The $OCTALw. formatconverts character values to octal representation.

Examples

Value of x Results

----+----1

select put (3592, octal16.); 007010

See AlsoFormats:“$OCTALw. Format” on page 44

PERCENTw.d Format

Writes numeric values as percentages.

Category: NumericAlignment: right

SyntaxPERCENTw. [ d ]

Page 102: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

98 PERCENTNw.d Format � Chapter 4

Syntax Description

wspecifies the width of the output field.Default: 6Range: 4–32

dspecifies the number of digits to the right of the decimal point in the numeric value.Range: 0–31Requirement: must be less than w

DetailsThe PERCENTw.d format multiplies values by 100, formats them the same as theBESTw.d format, and adds a percent sign (%) to the end of the formatted value, while itencloses negative values in parentheses. The PERCENTw.d format allows room for apercent sign and parentheses, even if the value is not negative.

Examples

Statements Results

----+----1----+----2

select put(0.1,percent10.); 10%

select put(1.2,percent10.); 120%

select put(-.05,percent10.); ( 5%)

See AlsoFormats:“PERCENTNw.d Format” on page 98

PERCENTNw.d FormatProduces percentages, using a minus sign for negative values.

Category: NumericAlignment: right

SyntaxPERCENTNw. [ d ]

Page 103: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � QTRw. Format 99

Syntax Description

wspecifies the width of the output field.Default: 6Range: 4–32

dspecifies the number of digits to the right of the decimal point in the numeric value.Range: 0–31Requirement: must be less than w

DetailsThe PERCENTNw.d format multiplies negative values by 100, formats them the sameas the BESTw.d format, adds a minus sign to the beginning of the value, and adds apercent sign (%) to the end of the formatted value. The PERCENTNw.d format allowsroom for a percent sign and a minus sign, even if the value is not negative.

ComparisonsThe PERCENTNw.d format produces percents by using a minus sign instead ofparentheses for negative values. The PERCENTw.d format produces percents by usingparentheses for negative values.

Examples

Statements Results

select put(-0.1,percentn10.); -10%

select put(.2,percentn10.); 20%

select put(.8,percentn10.); 80%

select put(-0.05,percentn10.); -5%

select put(-6.3,percentn10.); -630%

See AlsoFormats:“PERCENTw.d Format” on page 97

QTRw. Format

Writes SAS date values as the quarter of the year.

Page 104: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

100 QTRRw. Format � Chapter 4

Category: Date and Time

Alignment: right

SyntaxQTRw.

Syntax Description

wspecifies the width of the output field.

Default: 1

Range: 1–32

Examples

The example table uses the input value of 17596, which is the SAS date value thatcorresponds to March 5, 2008.

Statement Result

----+----1

select put(17596,qtr.); 1

See AlsoFormats:

“QTRRw. Format” on page 100

QTRRw. Format

Writes SAS date values as the quarter of the year in Roman numerals.

Category: Date and Time

Alignment: right

SyntaxQTRRw.

Page 105: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � ROMANw. Format 101

Syntax Description

wspecifies the width of the output field.Default: 3Range: 3–32

Examples

The example table uses the input value of 17790, which is the SAS date value thatcorresponds to September 15, 2008.

Statement Result

----+----1

select put(17790,qtrr.); III

See AlsoFormats:“QTRw. Format” on page 99

ROMANw. Format

Writes numeric values as roman numerals.

Category: NumericAlignment: left

SyntaxROMANw.

Syntax Description

wspecifies the width of the output field.Default: 6Range: 2–32

DetailsThe ROMANw. format truncates a floating-point value to its integer component beforethe value is written.

Page 106: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

102 SIZEKw.d Format � Chapter 4

Examples

Statement Result

----+----1

select put(2006,roman.); MMVI

SIZEKw.d Format

Writes a numeric value in the form nK for kilobytes.

Category: NumericAlignment: right

SyntaxSIZEKw. [d ]

Syntax Description

wspecifies the width of the output field.Default: 9Range: 2–33

dspecifies the number of digits to the right of the decimal point in the numeric value.Default: 0Range: 0–31

DetailsTo write a numeric value in the form nK by using the SIZEKw.d format, the value of nis calculated by dividing the numeric value by 1,024. The symbol K indicates that thevalue is a multiple of 1,024.

Examples

Statements Results

----+----1

select put (1024, sizek.); 1K

select put (200943, sizek.); 197K

Page 107: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � SIZEKMGw.d Format 103

See Also

Formats:“SIZEKMGw.d Format” on page 103

SIZEKMGw.d FormatWrites a numeric value in the form nKB for kilobytes, nMB for megabytes, or nGB for gigabytes.

Category: NumericAlignment: right

SyntaxSIZEKMGw. [d ]

Syntax Description

wspecifies the width of the output field.Default: 9Range: 2–33

dspecifies the number of digits to the right of the decimal point in the numeric value.This argument is optional.Default: 0Range: 0–31

DetailsWhen you specify the SIZEKMGw.d format, SAS determines the best suffix: KB forkilobytes; MB for megabytes; or GB for gigabytes; and divides the SAS numeric valueby one of the following values:

KB 1024

MB 1048576

GB 1073741824

Examples

Statements Results

------+------1

select put (3688, sizekmg.); 4KB

select put (1048576, sizekmg.); 1MB

select put (83409922345, sizekmg.); 8GB

Page 108: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

104 TIMEw.d Format � Chapter 4

See Also

Formats:“SIZEKw.d Format” on page 102

TIMEw.d Format

Writes SAS time values as hours, minutes, and seconds in the form hh:mm:ss.ss using themilitary 24-hour clock.

Category: Date and TimeAlignment: right

SyntaxTIMEw. [ d ]

Syntax Description

wspecifies the width of the output field.Default: 8Range: 2–20Tip: Make w large enough to produce the desired results. To obtain a complete time

value with three decimal places, you must allow at least 12 spaces: eight spaces tothe left of the decimal point, one space for the decimal point itself, and threespaces for the decimal fraction of seconds.

dspecifies the number of digits to the right of the decimal point in the seconds value.Default: 0Range: 0–19Requirement: must be less than w

DetailsThe TIMEw.d format writes SAS time values in the form hh:mm:ss.ss, where

hhis an integer.

Note: If hh is a single digit, TIMEw.d places a leading blank before the digit.For example, the TIMEw.d. format writes 9:00 instead of 09:00. �

mmis the number of minutes, ranging from 00 through 59.

ss.ss

Page 109: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � TIMEAMPMw.d Format 105

is the number of seconds, ranging from 00 through 59, with the fraction of asecond following the decimal point.

ComparisonsThe TIMEw.d format is similar to the HHMMw.d format except that TIMEw.d includesseconds.

The TIMEw.d format and the HHMMw format write a leading blank for asingle–hour digit. The TODw.d format writes a leading zero for a single–hour digit.

Examples

The example table uses the input value of 59083, which is the SAS time value thatcorresponds to 4:24:43 PM.

Statement Result

----+----1

select (59083,time.); 16:24:43

See Also

Formats:

“HHMMw.d Format” on page 80

“HOURw.d Format” on page 81

“MMSSw.d Format” on page 87

“TODw.d Format” on page 107

Functions:

“HOUR Function” on page 158

“MINUTE Function” on page 169

“SECOND Function” on page 181

TIMEAMPMw.d Format

Writes SAS time values as hours, minutes, and seconds in the form hh:mm:ss.ss with AM or PM.

Category: Date and Time

Alignment: right

SyntaxTIMEAMPMw. [ d ]

Page 110: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

106 TIMEAMPMw.d Format � Chapter 4

Syntax Description

wspecifies the width of the output field.Default: 11Range: 2–20

dspecifies the number of digits to the right of the decimal point in the seconds value.Default: 0Range: 0–19Requirement: must be less than w

DetailsThe TIMEAMPMw.d format writes SAS time values in the form hh:mm:ss.ss with AMor PM, where

hhis an integer that represents the hour.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

Times greater than 23:59:59 PM appear as the next day.Make w large enough to produce the desired results. To obtain a complete time value

with three decimal places and AM or PM, you must allow at least 11 spaces (hh:mm:ssPM). If w is less than 5, SAS writes AM or PM only.

Comparisons� The TIMEAMPMMw.d format is similar to the TIMEMw.d format except, that

TIMEAMPMMw.d prints AM or PM at the end of the time.� TIMEw.d writes hours greater than 11:59:59, and TIMEAMPMw.d does not.

Examples

The example table uses the input value of 59083, which is the SAS time value thatcorresponds to 4:24:43 PM.

Statements Results

----+----1----+

select put(59083,timeampm3.); PM

select put(59083,timeampm5.); 4 PM

select put(59083,timeampm7.); 4:24 PM

select put(59083,timeampm11.); 4:24:43 PM

Page 111: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � TODw.d Format 107

See AlsoFormats:“TIMEw.d Format” on page 104

TODw.d FormatWrites SAS time values and the time portion of SAS datetime values in the form hh:mm:ss.ss.

Category: Date and TimeAlignment: right

SyntaxTODw. [ d ]

Syntax Description

wspecifies the width of the output field.Default: 8Range: 2–20Tip: SAS writes a zero for a zero hour if the specified width is sufficient. For

example, 02:30 or 00:30.

dspecifies the number of digits to the right of the decimal point in the seconds value.Default: 0Range: 0–19Requirement: must be less than w

DetailsThe TODw.d format writes SAS datetime values in the form hh:mm:ss.ss, where

hhis an integer that represents the hour.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

ComparisonsThe TOWw.d format writes a leading zero for a single–hour digit. The TIMEw.d formatand the HHMMw.d format write a leading blank for a single–hour digit.

Page 112: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

108 VAXRBw.d Format � Chapter 4

Examples

Statement Result

select put(1472049623,tod9.); 14:40:23

See AlsoFormats:“TIMEw.d Format” on page 104“TIMEAMPMw.d Format” on page 105

VAXRBw.d Format

Writes real binary (floating-point) data in VMS format.

Category: NumericAlignment: right

SyntaxVAXRBw. [ d ]

Syntax Description

wspecifies the width of the output field.Default: 8Range: 2-8

dspecifies the power of 10 by which to divide the value.Default: 0Range: 0–31

DetailsUse the VAXRBw.d format to write data in native VAX/VMS floating-point notation.

Examples

Statement Result*

----+----1

select put(1,vaxrb8.); 8040000000000000

* The result is the hexadecimal representation for the integer.

Page 113: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � w.d Format 109

w.d FormatWrites standard numeric data one digit per byte.

Category: NumericAlignment: rightAlias: Fw.d

Syntaxw. [ d ]

Syntax Description

wspecifies the width of the output field.Range: 1–32Tip: Allow enough space to write the value, the decimal point, and a minus sign, if

necessary.

dspecifies the number of digits to the right of the decimal point in the numeric value.This argument is optional.Range: 0–31Requirement: must be less than wTip: If d is 0 or you omit d, w.d writes the value without a decimal point.

DetailsThe w.d format rounds to the nearest number that fits in the output field. If w.d is toosmall, SAS might shift the decimal to the BESTw. format. The w.d format writesnegative numbers with leading minus signs. In addition, w.d right aligns before writingand pads the output with leading blanks.

ComparisonsThe Zw.d format is similar to the w.d format except that Zw.d pads right-alignedoutput with 0s instead of blanks.

Examples

Statements Results

----+----1----+

select put (23.45, 6.3); 23.450

Page 114: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

110 WEEKDATEw. Format � Chapter 4

See AlsoFormats:

“Zw.d Format” on page 129

WEEKDATEw. Format

Writes SAS date values as the day of the week and the date in the form day-of-week, month-namedd, yy (or yyyy).

Category: Date and Time

Alignment: right

SyntaxWEEKDATEw.

Syntax Description

wspecifies the width of the output field.

Default: 29

Range: 3–37

DetailsThe WEEKDATEw. format writes SAS date values in the form day-of-week,month-name dd, yy (or yyyy), where

ddis an integer that represents the day of the month.

yy or yyyyis a two-digit or four-digit integer that represents the year.

If w is too small to write the complete day of the week and month, SAS abbreviates asneeded.

ComparisonsThe WEEKDATEw. format is the same as the WEEKDATXw. format except thatWEEKDATXw. prints dd before the month’s name.

Examples

The example table uses the input value of 17331 which is the SAS date value thatcorresponds to June 14, 2007.

Page 115: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � WEEKDATXw. Format 111

Statements Results

----+----1----+----2

select put(17331,weekdate3.); Tue

select put(17331,weekdate9.); Tuesday

select put(17331,weekdate15.); Tue, Jun 14, 07

select put(17331,weekdate17.); Tue, Jun 14, 2007

See AlsoFormats:“DTWKDATXw. Format” on page 70“DATEw. Format” on page 56“DDMMYYw. Format” on page 61“MMDDYYw. Format” on page 84“TODw.d Format” on page 107“WEEKDATXw. Format” on page 111“YYMMDDw. Format” on page 118

WEEKDATXw. Format

Writes SAS date values as the day of the week and date in the form day-of-week, dd month-nameyy (or yyyy).

Category: Date and TimeAlignment: right

SyntaxWEEKDATXw.

Syntax Description

wspecifies the width of the output field.Default: 29Range: 3–37

DetailsThe WEEKDATXw. format writes SAS date values in the form day-of-week, ddmonth-name, yy (or yyyy), where

Page 116: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

112 WEEKDAYw. Format � Chapter 4

ddis an integer that represents the day of the month.

yy or yyyyis a two-digit or a four-digit integer that represents the year.

If w is too small to write the complete day of the week and month, then SASabbreviates as needed.

ComparisonsThe WEEKDATEw. format is the same as the WEEKDATXw. format, except thatWEEKDATEw. prints dd after the month’s name.

The WEEKDATXw. format is the same as the DTWKDATXw. format, except thatDTWKDATXw. expects a datetime value as input.

Examples

The example table uses the input value of 17585, which is the SAS date value thatcorresponds to February 23, 2008.

Statement Result

----+----1----+----2----+----3

select put(17585,weekdatx.); Saturday, 23 February 2008

See AlsoFormats:“DTWKDATXw. Format” on page 70“DATEw. Format” on page 56“DDMMYYw. Format” on page 61“MMDDYYw. Format” on page 84“TODw.d Format” on page 107“WEEKDATEw. Format” on page 110“YYMMDDw. Format” on page 118

WEEKDAYw. Format

Writes SAS date values as the day of the week.

Category: Date and TimeAlignment: right

SyntaxWEEKDAYw.

Page 117: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YEARw. Format 113

Syntax Description

wspecifies the width of the output field.Default: 1Range: 1–32

DetailsThe WEEKDAYw. format writes a SAS date value as the day of the week (where1=Sunday, 2=Monday, and so on).

Examples

The example table uses the input value of 17585, which is the SAS date value thatcorresponds to February 23, 2008.

Statement Result

----+----1

select put(17585,weekday.); 7

See AlsoFormats:“DOWNAMEw. Format” on page 67

YEARw. Format

Writes SAS date values as the year.

Category: Date and TimeAlignment: right

SyntaxYEARw.

Syntax Description

w

Page 118: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

114 YENw.d Format � Chapter 4

specifies the width of the output field.Default: 4Range: 2–32Tip: If w is less than 4, the last two digits of the year print; otherwise, the year

value prints as four digits.

ComparisonsThe YEARw. format is similar to the DTYEARw. format in that they both write datevalues. The difference is that YEARw. expects a SAS date value as input, andDTYEARw. expects a SAS datetime value.

Examples

The example table uses the input value of 17331, which is the SAS date value thatcorresponds to June 14, 2007.

Statements Results

----+----1

select put(17331,year2.); 07

select put(17331,year4.); 2007

See AlsoFormats:“DTYEARw. Format” on page 71

YENw.d Format

Writes numeric values with yen signs, commas, and decimal points.

Category: NumericAlignment: right

SyntaxYENw.d

Syntax Description

w

Page 119: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YYMMw. Format 115

specifies the width of the output field.Default: 1Range: 1–32

dspecifies the number of digits to the right of the decimal point in the numeric value.

Restriction: must be either 0 or 2Tip: If d is 2, then YENw.d writes a decimal point and two decimal digits. If d is 0,

then YENw.d does not write a decimal point or decimal digits.

DetailsThe YENw.d format writes numeric values with a leading yen sign and with a commathat separates every three digits of each value.

The hexadecimal representation of the code for the yen sign character is 5B onEBCDIC systems and 5C on ASCII systems. The monetary character these codesrepresent can be different in other countries.

Examples

Statement Result

----+----1

select put(1254.71,yen10.2); ¥1,254.71

YYMMw. Format

Writes SAS date values in the form <yy>yyMmm, where M is the separator and the year appearsas either 2 or 4 digits.

Category: Date and TimeAlignment: right

SyntaxYYMMw.

Syntax Description

wspecifies the width of the output field.Default: 7

Page 120: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

116 YYMMxw. Format � Chapter 4

Range: 5–32

Interaction: When w has a value of 5 or 6, the date appears with only the last twodigits of the year. When w is 7 or more, the date appears with a four-digit year.

DetailsThe YYMMw. format writes SAS date values in the form <yy>yyMmm, where

<yy>yyis a two-digit or four-digit integer that represents the year.

Mis the character separator.

mmis an integer that represents the month.

Examples

The following examples use the input value of 17830, which is the SAS date valuethat corresponds to October 25, 2008.

Statements Results

----+----1----+

select put(17830,yymm5.); 08M10

select put(17830,yymm6.); 08M10

select put(17830,yymm.); 2008M10

select put(17830,yymm7.); 2008M10

select put(17830,yymm10.); 2008M10

See AlsoFormats:

“MMYYw. Format” on page 89

“YYMMxw. Format” on page 116

YYMMxw. Format

Writes SAS date values in the form <yy>yymm or <yy>yyXmm, where X represents a specifiedseparatoptpub r and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: right

Page 121: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YYMMxw. Format 117

SyntaxYYMMxw.

Syntax Description

xidentifies a separator or specifies that no separator appear between the year and themonth. Valid values for x are:

Cseparates with a colon

Dseparates with a dash

Nindicates no separator

Pseparates with a period

Sseparates with a forward slash

wspecifies the width of the output field.Default: 7Range: 5–32Interaction: When x is set to N, no separator is specified. The width range is then

4–32, and the default changes to 6.Interaction: When x has a value of C, D, P, or S and w has a value of 5 or 6, the

date appears with only the last two digits of the year. When w is 7 or more, thedate appears with a four-digit year.

Interaction: When x has a value of N and w has a value of 4 or 5, the date appearswith only the last two digits of the year. When x has a value of N and w is 6 ormore, the date appears with a four-digit year.

DetailsThe YYMMxw. format writes SAS date values in the form <yy>yymm or <yy>yyXmm,where

<yy>yyis a two-digit or four-digit integer that represents the year.

Xis a specified separator.

mmis an integer that represents the month.

Examples

The following examples use the input value of 17727, which is the SAS date valuethat corresponds to July 14, 2008.

Page 122: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

118 YYMMDDw. Format � Chapter 4

Statements Results

----+----1----+

select put(17727,yymmc5.); 08:07

select put(17727,yymmd.); 2008-07

select put(17727,yymmn4.); 0807

select put(17727,yymmp8.); 2008.07

select put(17727,yymms10.); 2008/07

See AlsoFormats:“MMYYxw. Format” on page 90“YYMMw. Format” on page 115

YYMMDDw. Format

Writes SAS date values in the form <yy>yymmdd or <yy>yy–mm–dd, where the x in the formatname is a character that represents the special character which separates the year, month, andday. The special character can be a hyphen(-), period (.), blank character, slash (/), colon (:), orno separator; the year can be either 2 or 4 digits.

Category: Date and TimeAlignment: right

SyntaxYYMMDDw.

Syntax Description

wspecifies the width of the output field.Default: 8Range: 2–10Interaction: When w has a value of from 2 to 5, the date appears with as much of

the year and the month as possible. When w is 7, the date appears as a two-digityear without dashes.

DetailsThe YYMMDDw. format writes SAS date values in the form <yy>yymmdd or<yy>yy–mm–dd, where

Page 123: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YYMMDDxw. Format 119

<yy>yyis a two-digit or four-digit integer that represents the year.

–is the separator.

mmis an integer that represents the month.

ddis an integer that represents the day of the month.

Examples

The following examples use the input value of 17625, which is the SAS date valuethat corresponds to April 3, 2008.

Statements Results

----+----1----+

select put(17625,yymmdd2.); 08

select put(17625,yymmdd3.); 08

select put(17625,yymmdd4.); 0804

select put(17625,yymmdd5.); 08-04

select put(17625,yymmdd6.); 080403

select put(17625,yymmdd7.); 080403

select put(17625,yymmdd8.); 08-04-03

select put(17625,yymmdd10.); 2008-04-03

See Also

Formats:“DATEw. Format” on page 56“DDMMYYw. Format” on page 61“MMDDYYw. Format” on page 84“YYMMDDxw. Format” on page 119

Functions:“DAY Function” on page 153“MONTH Function” on page 171“YEAR Function” on page 199

YYMMDDxw. Format

Writes SAS date values in the form <yy>yymmdd or <yy>yyXmmXdd, where the x in the formatname is a character that represents the special character which separates the year, month, and

Page 124: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

120 YYMMDDxw. Format � Chapter 4

day. The special character can be a hyphen (-), period (.), blank character, slash (/), colon (:), orno separator; the year can be either 2 or 4 digits.

Category: Date and TimeAlignment: right

SyntaxYYMMDDxw.

Syntax Description

xidentifies a separator or specifies that no separator appear between the year, themonth, and the day. Valid values for x are:

Bseparates with a blank

Cseparates with a colon

Dseparates with a dash

Nindicates no separator

Pseparates with a period

Sseparates with a slash.

wspecifies the width of the output field.Default: 8Range: 2–10Interaction: When w has a value of from 2 to 5, the date appears with as much of

the year and the month. When w is 7, the date appears as a two-digit yearwithout separators.

Interaction: When x has a value of N, the width range is 2–8.

DetailsThe YYMMDDxw. format writes SAS date values in the form <yy>yymmdd or<yy>yyXmmXdd, where

<yy>yyis a two-digit or four-digit integer that represents the year.

Xis a specified separator.

mm

Page 125: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YYMONw. Format 121

is an integer that represents the month.

ddis an integer that represents the day of the month.

Examples

The following examples use the input value of 17827, which is the SAS date valuethat corresponds to October 22, 2008.

Statements Results

----+----1----+

select put(17827,yymmddc5.); 08:10

select put(17827,yymmddd8.); 08-10-22

select put(17827,yymmddn8.); 081022

select put(17827,yymmddp10.); 2008.10.222

See Also

Formats:“DATEw. Format” on page 56“DDMMYYxw. Format” on page 63“MMDDYYxw. Format” on page 86“YYMMDDw. Format” on page 118

Functions:“DAY Function” on page 153“MONTH Function” on page 171“YEAR Function” on page 199

YYMONw. Format

Writes SAS date values in the form yymmm or yyyymmm.

Category: Date and TimeAlignment: right

SyntaxYYMONw.

Syntax Description

Page 126: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

122 YYQw. Format � Chapter 4

wspecifies the width of the output field. If the format width is too small to print afour-digit year, only the last two digits of the year are printed.

Default: 7Range: 5–32

DetailsThe YYMONw. format abbreviates the month’s name to three characters.

Examples

The example table uses the input value of 17331, which is the SAS date value thatcorresponds to June 14, 2007.

Statements Results

----+----1

select put(17331,yymon6.); 07JUN

select put(17331,yymon7.); 2007JUN

See AlsoFormats:

“MMYYw. Format” on page 89

YYQw. Format

Writes SAS date values in the form <yy>yyQq, where Q is the separator, the year appears aseither 2 or 4 digits, and q is the quarter of the year.

Category: Date and Time

Alignment: right

SyntaxYYQw.

Syntax Description

wspecifies the width of the output field.

Page 127: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YYQxw. Format 123

Default: 6Range: 4–32Interaction: When w has a value of 4 or 5, the date appears with only the last two

digits of the year. When w is 6 or more, the date appears with a four-digit year.

DetailsThe YYQw. format writes SAS date values in the form <yy>yyQq, where

<yy>yyis a two-digit or four-digit integer that represents the year.

Qis the character separator.

qis an integer (1,2,3, or 4) that represents the quarter of the year.

Examples

The following examples use the input value of 17331, which is the SAS date valuethat corresponds to June 14, 2007.

Statements Results

----+----1----+

select put(17331,yyq4.); 07Q2

select put(17331,yyq5.); 07Q2

select put(17331,yyq.); 2007Q2

select put(17331,yyq6.); 2007Q2

select put(17331,yyq10.); 2007Q2

See Also

Formats:“YYQxw. Format” on page 123“YYQRw. Format” on page 125“YYQRxw. Format” on page 126“YYQZw. Format” on page 128

YYQxw. Format

Writes SAS date values in the form <yy>yyq or <yy>yyXq, where the x in the format name is acharacter that represents the special character that separates the year and the quarter of the year,which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; theyear can be either 2 or 4 digits, and q is the quarter of the year.

Page 128: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

124 YYQxw. Format � Chapter 4

Category: Date and Time

Alignment: right

SyntaxYYQxw.

Syntax Description

xidentifies a separator or specifies that no separator appear between the year and thequarter. Valid values for x are:

Cseparates with a colon

Dseparates with a dash

Nindicates no separator

Pseparates with a period

Sseparates with a forward slash.

wspecifies the width of the output field.

Default: 6

Range: 4–32

Interaction: When x is set to N, no separator is specified. The width range is then3–32, and the default changes to 5.

Interaction: When w has a value of 4 or 5, the date appears with only the last twodigits of the year. When w is 6 or more, the date appears with a four-digit year.

Interaction: When x has a value of N and w has a value of 3 or 4, the date appearswith only the last two digits of the year. When x has a value of N and w is 5 ormore, the date appears with a four-digit year.

DetailsThe YYQxw. format writes SAS date values in the form <yy>yyq or <yy>yyXq, where

<yy>yyis a two-digit or four-digit integer that represents the year.

Xis a specified separator.

qis an integer (1,2,3, or 4) that represents the quarter of the year.

Page 129: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YYQRw. Format 125

Examples

The following examples use the input value of 17727, which is the SAS date valuethat corresponds to July 14, 2008.

Statements Results

----+----1----+

select put(17727,yyqc4.); 08:3

select put(17727,yyqd.); 2008-3

select put(17727,yyqn3.); 083

select put(17727,yyqp6.); 2008.3

select put(17727,yyqs8.); 2008/3

See AlsoFormats:

“YYQw. Format” on page 122

“YYQRw. Format” on page 125

“YYQRxw. Format” on page 126

“YYQZw. Format” on page 128

YYQRw. Format

Writes SAS date values in the form <yy>yyQqr, where Q is the separator, the year appears aseither 2 or 4 digits, and qr is the quarter of the year expressed in roman numerals.

Category: Date and Time

Alignment: right

SyntaxYYQRw.

Syntax Description

wspecifies the width of the output field.

Default: 8

Range: 6–32

Page 130: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

126 YYQRxw. Format � Chapter 4

Interaction: When the value of w is too small to write a four-digit year, the dateappears with only the last two digits of the year.

DetailsThe YYQRw. format writes SAS date values in the form <yy>yyQqr, where

<yy>yyis a two-digit or four-digit integer that represents the year.

Qis the character separator.

qris a roman numeral (I, II, III, or IV) that represents the quarter of the year.

Examples

The following examples use the input value of 17331, which is the SAS date valuethat corresponds to June 14, 2007.

Statements Results

----+----1----+

select put(17331,yyqr6.); 07QII

select put(17331,yyqr7.); 2007QII

select put(17331,yyqr.); 2007QII

select put(17331,yyqr8.); 2007QII

select put(17331,yyqr10.); 2007QII

See AlsoFormats:“YYQw. Format” on page 122“YYQRxw. Format” on page 126

YYQRxw. Format

Writes SAS date values in the form <yy>yyqr or <yy>yyXqr, where X represents a specifiedseparator, the year appears as either 2 or 4 digits, and qr is the quarter of the year expressed inroman numerals.

Category: Date and TimeAlignment: right

SyntaxYYQRxw.

Page 131: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � YYQRxw. Format 127

Syntax Description

xidentifies a separator or specifies that no separator appear between the year and thequarter. Valid values for x are:

Cseparates with a colon

Dseparates with a dash

Nindicates no separator

Pseparates with a period

Sseparates with a forward slash.

wspecifies the width of the output field.Default: 8Range: 6–32Interaction: When x is set to N, no separator is specified. The width range is then

5–32, and the default changes to 7.Interaction: When the value of w is too small to write a four-digit year, the date

appears with only the last two digits of the year.

DetailsThe YYQRxw. format writes SAS date values in the form <yy>yyqr or <yy>yyXqr, where

<yy>yyis a two-digit or four-digit integer that represents the year.

Xis a specified separator.

qris a roman numeral (I, II, III, or IV) that represents the quarter of the year.

Examples

The following examples use the input value of 17524, which is the SAS date valuethat corresponds to December 24, 2007.

Statements Results

----+----1----+

select put(17524,yyqrc6.); 07:IV

select put(17524,yyqrd.); 2007-IV

Page 132: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

128 YYQZw. Format � Chapter 4

Statements Results

select put(17524,yyqrn5.); 07IV

select put(17524,yyqrp8.); 2007.IV

select put(17524,yyqrs10.); 2007/IV

See AlsoFormats:“YYQxw. Format” on page 123“YYQRw. Format” on page 125

YYQZw. Format

Writes SAS date values in the form <yy><qq>, the year appears as 2 or 4 digits, and qq is thequarter of the year.

Category: Date and TimeAlignment: right

SyntaxYYQZw.

Syntax Description

Zspecifies that no separator appear between the year and the quarter.

wspecifies the width of the output field.Default: 4Maximum: 6

DetailsThe YYQZw. format writes SAS date values in the form <yy> <qq>

<yy>is a two-digit or four-digit integer that represents the year.

Zspecifies that there is no separator.

qq

Page 133: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Formats � Zw.d Format 129

is an integer (01, 02, 03, or 04) that represents the quarter of the year.

Examples

The following examples use the input value of 17727, which is the SAS date valuethat corresponds to July 14, 2008.

Statements Results

----+----1----+

select put (17727,yyqz6.); 200803

select put (17727,yyqz4.); 0803

Zw.d Format

Writes standard numeric data with leading 0s.

Category: Numeric

Alignment: right

SyntaxZw. [ d ]

Syntax Description

wspecifies the width of the output field.

Default: 1Range: 1–32

Tip: Allow enough space to write the value, the decimal point, and a minus sign, ifnecessary.

dspecifies the number of digits to the right of the decimal point in the numeric value.Default: 0

Range: 0–31

Tip: If d is 0 or you omit d, Zw.d writes the value without a decimal point.

DetailsThe Zw.d format writes standard numeric values one digit per byte and fills in 0s to theleft of the data value.

Page 134: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

130 Zw.d Format � Chapter 4

The Zw.d format rounds to the nearest number that will fit in the output field. If w.dis too large to fit, SAS might shift the decimal to the BESTw. format. The Zw.d formatwrites negative numbers with leading minus signs. In addition, it right aligns beforewriting and pads the output with leading zeros.

ComparisonsThe Zw.d format is similar to the w.d format except that Zw.d pads right-alignedoutput with 0s instead of blanks.

Examples

Statement Result

----+----1

select put(1350,z8.); 00001350

See AlsoFormats:

“w.d Format” on page 109

Page 135: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

131

C H A P T E R

5TSSQL Functions

Overview of TSSQL Functions 132Overview of Functions 132

Aggregate Function Syntax 133

Non-Aggregate Function Syntax 133

General Function Syntax 134

Using Functions 134Restrictions on Function Arguments 134

Using TSPL Package Expressions 134

Aggregate Functions 135

Overview of Aggregate Functions 135

Calling Base SAS Functions Instead of TSSQL Aggregate Functions 135

Function Categories 136Dictionary 136

ABS Function 136

ACOS Function 137

ASIN Function 138

ATAN Function 139ATAN2 Function 140

AVG Function 141

CEILING Function 142

COS Function 143

COSH Function 144COT Function 145

COUNT Function 146

CSS Function 147

CURRENT_DATE Function 149

CURRENT_TIME Function 149

CURRENT_TIME_GMT Function 150CURRENT_TIMESTAMP Function 151

CURRENT_TIMESTAMP_GMT Function 152

DAY Function 153

DEGREES Function 154

E Function 155EXP Function 156

FLOOR Function 157

HOUR Function 158

IFNULL Function 159

KURTOSIS Function 160LOCALTIME Function 161

LOCALTIMESTAMP Function 162

LOG Function 163

Page 136: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

132 Overview of TSSQL Functions � Chapter 5

LOG10 Function 164LOG2 Function 165

LOWER Function 165

MAX Function 166

MIN Function 168

MINUTE Function 169MOD Function 170

MONTH Function 171

NMISS Function 172

OCTET_LENGTH Function 173

PI Function 174

POWER Function 175PROBT Function 176

PUT Function 177

RADIANS Function 179

RANGE Function 179

SECOND Function 181SIGN Function 182

SIN Function 183

SINH Function 183

SKEWNESS Function 184

SQRT Function 185STDDEV Function 186

STDERR Function 187

STUDENTS_T Function 188

SUBSTRING Function 190

SUM Function 191

TAN Function 192TANH Function 193

TRIM Function 194

UPPER Function 195

USS Function 196

VARIANCE Function 197YEAR Function 199

Overview of TSSQL Functions

Overview of FunctionsA TSSQL function performs a computation on TSSQL expressions and returns either

a single value or a set of values if the TSSQL expression is a column. Functions thatperform a computation on a column are aggregate functions. In other SQLenvironments, aggregate functions are also known as set functions.

TSSQL functions can be used in TSSQL applications or in TSPL programs whereembedded TSSQL is part of a TSPL application.

For more information, see “TSSQL Expressions” on page 20 and the SET statementin SAS Table Server: TSPL Language Reference.

Note: For the TSSQL functions that are like-named in Base SAS, these functionscan take DOUBLE and character arguments and return values, but all character returnvalues are NVARCHAR. �

Page 137: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � Overview of Functions 133

Aggregate Function SyntaxThe syntax for an aggregate function is:

aggregate-function (expression)

where

aggregate-functionspecifies the name of the function.

expressionspecifies an expression that evaluates to a column name. The expression caninclude one of the following forms:

table.column is a qualified column that identifies the table that is beingprocessed by the TSSQL statement followed by a period andthe name of the column.

Example:

select avg(densities.density)from densities;

column is an unqualified column name that has an implicit tablequalifier. The implicit table qualifier is the table that TSSQL isprocessing.

Example:

select avg(density)from densities;

Note: You can specify more than one argument for some aggregate functions. If youdo, the Base SAS function is used and the functions can no longer be considered anaggregate function. For more information, see “Calling Base SAS Functions Instead ofTSSQL Aggregate Functions” on page 135. �

Non-Aggregate Function SyntaxThe syntax of a function is

function (argument [, ...argument])

where

functionspecifies the name of the function.

argumentcan be a variable name, constant, or any TSSQL expression, including anotherfunction. The number and kind of arguments that TSSQL allows are describedwith individual functions. Separate multiple arguments by a comma.Examples:

� select sqrt(1500);

� select ifnull(AvgHigh, 0) from worldtemps;

Page 138: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

134 General Function Syntax � Chapter 5

General Function Syntax

Using Functions

Restrictions on Function ArgumentsIf the value of an argument is invalid, TSSQL sets the result to a null or missing

value. Here are some common restrictions on function arguments:� Some functions require that their arguments be restricted within a certain range.

For example, the argument of the LOG function must be greater than 0.� Most functions do not permit nulls or missing values as arguments. Exceptions

include some of the descriptive statistics functions and the IFNULL function.� In general, the allowed range of the arguments is platform-dependent, such as

with the EXP function.

Using TSPL Package ExpressionsYou can invoke a TSPL package expression as a function in a TSSQL SELECT

statement. The syntax for the expression is shown here.

[catalog.] [schema.] package.method (parameter [,… parameter])

The following restrictions apply when using TSPL package expressions in TSSQL:� The method parameters must be a double, an integer of any size, or a string.� The method must return a double, an integer of any size, or a string.� The method must return a value.� You must supply a package name.

In the following example, the method BAR is created in TSPL and then used in aTSSQL SELECT statement call.

/* TSPL code */package work.pack;

dcl x y double;method bar(double x, double y) returns double;

return x*x + y*y;end;

end package;

/* TSSQL code */select pack.bar(1,2) as five,

cot(radians(45)) as one,degrees(pi()) as one_eighty,power(3,4) as eighty_one,sign(-42) as minus1,sign(0) as zero,sign(42) as plus1

;

Page 139: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � Calling Base SAS Functions Instead of TSSQL Aggregate Functions 135

For more information, see “Package Expressions” in SAS Table Server: TSPLLanguage Reference.

Aggregate Functions

Overview of Aggregate FunctionsTSSQL aggregate functions operate on all values for an expression in a table column

and return a single result. If the aggregate function is processed in a GROUP BYstatement, the aggregate function returns a single result for each group. Null valuesand SAS missing values are not considered in the operation, except for the COUNT(*)syntax of the COUNT function. The table column that you specify in the function canbe any TSSQL expression that evaluates to a column name.

The following are TSSQL aggregate functions:� “AVG Function” on page 141� “COUNT Function” on page 146� “CSS Function” on page 147� “KURTOSIS Function” on page 160� “MAX Function” on page 166� “MIN Function” on page 168� “NMISS Function” on page 172� “PROBT Function” on page 176� “RANGE Function” on page 179� “SKEWNESS Function” on page 184� “STDDEV Function” on page 186� “STDERR Function” on page 187� “STUDENTS_T Function” on page 188� “SUM Function” on page 191� “USS Function” on page 196� “VARIANCE Function” on page 197

Using the table “WORLDTEMPS” on page 311, the following aggregate functionexamples operate on the AvgLow table column:

/* Get the average of the average low temperatures */select avg(AvgLow) as AvgTemp from worldtemps;

/* Get the number of different average low temperatures *//* and group them by the average low temperature */select AvgLow, count(AvgLow) from worldtemps group by AvgLow;

/* Get the highest average low temperature */select max(AvgLow) from worldtemps;

Calling Base SAS Functions Instead of TSSQL Aggregate FunctionsIf multiple columns are supplied as arguments to an aggregate function and there is

a like-named Base SAS function, the Base SAS function is used. The statistic

Page 140: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

136 Function Categories � Chapter 5

calculated for those arguments is for the current row. The function is no longerconsidered to be an aggregate function. If multiple arguments are supplied to anaggregate function and there is no like-named Base SAS function an error is returned.Some examples are the MIN, MAX, and SUM functions.

Function CategoriesFunctions can be categorized by the types of values that they operate on. Each

TSSQL function belongs to one of the following categories:

Aggregate operates on the values in a table column

Character operates on character SQL expressions

Date and time operates on date and time SQL expressions

DescriptiveStatistics

operates on values that measure central tendency, variation amongvalues, and the shape of distribution values

Mathematical operates on values to perform general mathematical calculations

Special operates on null values and SAS missing values

Trigonometric operates on values to perform trigonometric calculations

Dictionary

ABS Function

Returns the absolute value of a numeric value expression.

Category: MathematicalReturn value data type: The same data type as expression

SyntaxABS (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,

TINYINTSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Page 141: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � ACOS Function 137

DetailsIf expression is NULL, then the ABS function returns NULL. If the result is a numberthat does not fit into the range of the argument’s data type, the ABS function fails.

Examples

The following statements illustrate the ABS function:

Statements Results

select abs(-345); 345

select abs((3 * 50) / 5) 30

ACOS Function

Returns the arccosine in radians.

Category: TrigonometricAlias: ARCOSReturn value data type: DOUBLE

SyntaxACOS (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Range: -1 to 1Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe ACOS function returns the arccosine (inverse cosine) of the argument. The valuethat is returned is specified in radians.

Page 142: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

138 ASIN Function � Chapter 5

Examples

The following statements illustrate the ACOS function:

Statements Results

select acos(1); 0

select arcos(0); 1.570796

select acos(-0.5); 2.094395

ASIN Function

Returns the arcsine in radians.

Category: Trigonometric

Alias: ARSIN

Return value data type: DOUBLE

SyntaxASIN (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Range: -1 to 1

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the ASIN function:

Statements Results

select asin(0); 0

select asin(1); 1.570796

select asin(-0.5); -0.5236

Page 143: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � ATAN Function 139

ATAN Function

Returns the arctangent in radians.

Category: Trigonometric

Alias: ARTAN

Return value data type: DOUBLE

Syntax

ATAN (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Details

The ATAN function returns the 2-quadrant arctangent (inverse tangent) of theargument. The value that is returned is the angle (in radians) whose tangent is x andwhose value ranges from -��� to ���. If the argument is missing, then ATAN returns amissing value.

Comparisons

The ATAN function is similar to the ATAN2 function except that ATAN2 calculates thearc tangent of the angle from the values of two arguments rather than from oneargument.

Examples

The following statements illustrate the ATAN function:

Statements Results

select atan(0); 0

select atan(1); 0.785398

select atan(-9.0); -1.46014

Page 144: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

140 ATAN2 Function � Chapter 5

See Also

Functions:

“ATAN2 Function” on page 140

ATAN2 Function

Returns the arctangent of the x and y coordinates of a right triangle, in radians.

Category: Trigonometric

Return value data type: DOUBLE

SyntaxATAN2 (expression–1, expression–2, )

Arguments

expression–1specifies any valid SQL expression that evaluates to a numeric value. expression-1specifies the x coordinate of the end of the hypotenuse of a right triangle.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

expression–2specifies any valid SQLexpression that evaluates to a numeric value. expression–2specifies the y coordinate of the end of the hypotenuse of a right triangle.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Details

The ATAN2 function returns the arctangent (inverse tangent) of two numeric variables.The result of this function is similar to the result of calculating the arctangent ofexpression–1 / expression–2, except that the signs of both arguments are used todetermine the quadrant of the result. If either of the arguments in ATAN2 is missing,then ATAN2 returns either a null or a SAS missing value.

Comparisons

The ATAN2 function is similar to the ATAN function except that ATAN calculates thearctangent of the angle from the value of one argument rather than from twoarguments.

Page 145: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � AVG Function 141

Examples

The following statements illustrate the ATAN2 function:

Statements Results

select atan2(-1, 0.5); -1.10715

select atan2(6,8); 0.643501

select atan2(5,-3); 2.111216

See Also

Functions:“ATAN Function” on page 139

“How TSSQL Processes Nulls and SAS Missing Values” on page 12

AVG Function

Returns the average of all values in a column.

Category: AggregateDescriptive Statistics

Alias: MEANReturn value data type: DOUBLE

SyntaxAVG (expression)

Arguments

expressionspecifies any valid SQL expression.Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,

TINYINTSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe AVG function adds the values of all the rows in the specified column and dividesthe result by the number of rows. Null values and SAS missing values are ignored andare not included in the computation.

Page 146: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

142 CEILING Function � Chapter 5

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “DENSITIES” on page 311

The following statements illustrate the AVG function:

Statements Results

select avg(density) from densities; 172.8324

select avg(population) from densities; 12277544

See Also

Functions:“SUM Function” on page 191

Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

CEILING Function

Returns the smallest integer greater than or equal to a numeric value expression, fuzzed to avoidunexpected floating–point results.

Category: TruncationAlias: CEILReturn value data type: DOUBLE

SyntaxCEILING (expression)

Arguments

Page 147: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � COS Function 143

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsIf expression is NULL, then the CEILING function returns NULL. If the result is anumber that does not fit into the range of the argument’s data type, the CEILINGfunction fails.

If the argument is within 1E-12 of an integer, the CEILING function fuzzes theresult to be equal to that integer.

Examples

The following statements illustrate the CEILING function:

Statements Results

select ceiling(-2.4); -2

select ceil(1+1.e-11); 2

select ceiling(-1+1.e-11); 0

select ceil(1+1.e-13); 2

select ceiling(223.456); 224

select ceiling(763); 763

See Also

Functions:

“FLOOR Function” on page 157

COS Function

Returns the cosine in radians.

Category: Trigonometric

Return value data type: DOUBLE

SyntaxCOS (expression)

Page 148: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

144 COSH Function � Chapter 5

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the COS function:

Statements Results

select cos(0.5); 0.877583

select cos(0); 1

select cos(3.14159/3); 0.50003

COSH Function

Returns the hyperbolic cosine in radians.

Category: Trigonometric

Return value data type: DOUBLE

SyntaxCOSH (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe COSH function returns the hyperbolic cosine of the argument, given by

����������

� �������������

Page 149: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � COT Function 145

Examples

The following statements illustrate the COSH function:

Statements Results

select cosh(0); 1

select cosh(-5.0); 74.20995

select cosh(4.37); 39.52814

select cosh(0.5); 1.127626

COT Function

Returns the tangent in radians.

Category: Trigonometric

Return value data type: DOUBLE

SyntaxCOT (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the COT function:

Statements Results

select cot(0); .

select cot(0.5) 1.830488

select cot(5.79); -1.86051

select cot(1); 0.642093

Page 150: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

146 COUNT Function � Chapter 5

COUNT Function

Returns the number of rows retrieved by a SELECT statement for a specified table.

Category: AggregateTip: The SPD data set in the SPDD file format is optimized to provide enhancedperformance for the COUNT function.Alias: NReturn value data type: BIGINT

SyntaxuCOUNT (expression)

vCOUNT (*)

wCOUNT ([DISTINCT] expression)

Arguments

DISTINCTreturns the number of unique values, excluding null values.

expressionspecifies any valid SQL expression.Valid data types: All data types are valid.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

*returns a count of all rows from the table, including rows that contain null values orSAS missing values.

DetailsYou use the COUNT function in a SELECT statement to return the requested numberof rows in a table.

The following list describes what is returned by using the different versions of theCOUNT function:

u COUNT(expression)returns the number of rows from a table that do not have a null value.

v COUNT(*)returns the number of rows in a table.

w COUNT(DISTINCT expression)returns the number of rows in expression that have unique values. SAS missingvalues are included in the results. Null values are not included in the results.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column or

Page 151: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � CSS Function 147

columns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “WORLDTEMPS” on page 311

The following statements illustrate the COUNT function:

Statements Results

select count(AvgHigh) from worldtemps; 11

select count(*) from worldtemps; 12

select count(distinct AvgHigh) from worldtemps; 8

See Also

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

CSS Function

Returns the corrected sum of squares of all values in an expression.

Category: AggregateDescriptive Statistics

Return value data type: DOUBLE

SyntaxCSS (expression)

Arguments

expressionspecifies any valid SQL expression.Valid data types: DOUBLE, FLOAT, REAL

Page 152: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

148 CSS Function � Chapter 5

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe corrected sum of squares is the sum of squared deviations (differences) from themean.

Null values and SAS missing values are ignored and are not included in thecomputation.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ComparisonThe USS function returns the uncorrected sum of squares. The CSS function returnsthe corrected sum of squares of all values.

ExamplesTable: “DENSITIES” on page 311

The following statement illustrates the CSS function:

Statement Result

select css(density) from densities; 211483.1

See Also

Functions:“USS Function” on page 196

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

Page 153: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � CURRENT_TIME Function 149

CURRENT_DATE Function

Returns the current GMT date.

Category: Date and time

Return value data type: DATE

SyntaxCURRENT_DATE

ComparisonsThe CURRENT_DATE function returns the current GMT date. TheCURRENT_TIMESTAMP or LOCALTIMESTAMP function returns the current date inyour time zone.

Examples

The following statement illustrates the CURRENT_DATE function:

Statement Result

select current_date; 20JUL2008

See Also

Functions:

“CURRENT_TIME Function” on page 149

“CURRENT_TIME_GMT Function” on page 150

“CURRENT_TIMESTAMP Function” on page 151

“CURRENT_TIMESTAMP_GMT Function” on page 152

“LOCALTIME Function” on page 161

“LOCALTIMESTAMP Function” on page 162

CURRENT_TIME Function

Returns the current time for your time zone.

Category: Date and time

Return value data type: TIME

Page 154: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

150 CURRENT_TIME_GMT Function � Chapter 5

SyntaxCURRENT_TIME

ComparisonsThe CURRENT_TIME function returns the current time for your time zone. TheLOCALTIME function returns the same value. The CURRENT_TIME_GMT functionreturns the current time in GMT.

Examples

The following statement illustrates the CURRENT_TIME function:

Statement Result

select current_time; 11:00:49

See Also

Functions:“CURRENT_DATE Function” on page 149“CURRENT_TIME_GMT Function” on page 150“CURRENT_TIMESTAMP Function” on page 151“CURRENT_TIMESTAMP_GMT Function” on page 152“LOCALTIME Function” on page 161“LOCALTIMESTAMP Function” on page 162

CURRENT_TIME_GMT Function

Returns the current GMT time.

Category: Date and timeReturn value data type: TIME

SyntaxCURRENT_TIME_GMT( )

ComparisonsThe CURRENT_TIME_GMT function returns the current GMT time. TheCURRENT_TIME and LOCALTIME function returns the current time for your timezone.

Page 155: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � CURRENT_TIMESTAMP Function 151

Examples

The following statement illustrates the CURRENT_TIME_GMT function:

Statement Result

select current_time_gmt( ); 15:00:49

See Also

Functions:

“CURRENT_DATE Function” on page 149

“CURRENT_TIME Function” on page 149

“CURRENT_TIMESTAMP Function” on page 151

“CURRENT_TIMESTAMP_GMT Function” on page 152

“LOCALTIME Function” on page 161

“LOCALTIMESTAMP Function” on page 162

CURRENT_TIMESTAMP Function

Returns the date and time for your time zone.

Category: Date and time

Return value data type: TIMESTAMP

SyntaxCURRENT_TIMESTAMP

ComparisonsThe CURRENT_TIMETIMESTAMP function returns the date and time for your timezone. The LOCALTIMESTAMP function returns the same value.

Examples

The following statement illustrates the CURRENT_TIMESTAMP function:

Statement Result

select current_timestamp; 30OCT2008:11:00:49

Page 156: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

152 CURRENT_TIMESTAMP_GMT Function � Chapter 5

See Also

Functions:“CURRENT_DATE Function” on page 149“CURRENT_TIME Function” on page 149“CURRENT_TIME_GMT Function” on page 150“CURRENT_TIMESTAMP_GMT Function” on page 152“LOCALTIME Function” on page 161“LOCALTIMESTAMP Function” on page 162

CURRENT_TIMESTAMP_GMT Function

Returns the current GMT date and time.

Category: Date and timeReturn value data type: TIMESTAMP

SyntaxCURRENT_TIMESTAMP_GMT( )

ComparisonsThe CURRENT_TIMESTAMP_GMT function returns the current GMT date and time.The CURRENT_TIMESTAMP and LOCALTIME function returns the current date andtime for your time zone.

Examples

The following statement illustrates the CURRENT_TIMESTAMP_GMT function:

Statement Result

select current_time_gmt( ); 30OCT2008:15:00:49

See Also

Functions:“CURRENT_DATE Function” on page 149“CURRENT_TIME Function” on page 149“CURRENT_TIMESTAMP Function” on page 151“CURRENT_TIME_GMT Function” on page 150“LOCALTIME Function” on page 161

Page 157: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � DAY Function 153

“LOCALTIMESTAMP Function” on page 162

DAY Function

Returns the numeric day of the month from a date or datetime value.

Category: Date and time

Return value data type: TINYINT

SyntaxDAY(date | datetime)

Arguments

datespecifies any valid expression that represents a date value.

Valid data types: DATE

See: “Overview of Expressions and Predicates” on page 201

datetimespecifies any valid expression that represents a datetime value.

Valid data types: TIMESTAMP

See: “Overview of Expressions and Predicates” on page 201

ExamplesTable: “CUSTONLINE” on page 313

The following statement illustrates the DAY function:

Statement Result

select day(endtime) from custonline; 1215112161115

Page 158: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

154 DEGREES Function � Chapter 5

See Also

Functions:“HOUR Function” on page 158“MINUTE Function” on page 169“MONTH Function” on page 171“SECOND Function” on page 181“YEAR Function” on page 199

“Dates and Times in TSSQL” on page 22

DEGREES FunctionReturns the number of degrees for an angle in radians.

Category: TrigonometricReturn value data type: DOUBLE

SyntaxDEGREES (expression)

Arguments

expressionspecifies any valid expression that evaluates to an angle specified in radians.Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,

TINYINT.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsIf expression is NULL, then the DEGREES function returns NULL. If the result is anumber that does not fit into the range of a DOUBLE data type, the DEGREESfunction fails.

Examples

The following statements illustrate the DEGREES function:

Statements Results

select degrees(2*pi()); 360

select degrees(pi()); 180

select degrees(pi()/2); 90

select degrees(pi()/4); 45

Page 159: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � E Function 155

See Also

Functions:“RADIANS Function” on page 179

E Function

Returns the natural logarithm, e.

Category: MathematicalReturn value data type: DOUBLE

SyntaxE ( )

DetailsThe E function returns the value of the natural logarithm, e, 2.7182818.

ComparisonsThe E function takes no argument and returns the value 2.7182818. The EXP functiontakes an argument and raises e to the power that is supplied by the argument.

Examples

The following statement illustrates the E function:

Statement Result

select e(); 2.718282

See Also

Functions:“EXP Function” on page 156

Page 160: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

156 EXP Function � Chapter 5

EXP Function

Returns the value of the e constant raised to a specified power.

Category: Mathematical

Return value data type: DOUBLE

SyntaxEXP (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,TINTYINT

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe EXP function raises the constant e, which is approximately given by 2.71828, to thepower that is supplied by the argument. The result is limited by the maximum value ofa double decimal value on the computer.

ComparisonsThe EXP function takes an argument and raises e to the power that is supplied by theargument. The E function takes no argument and returns the value 2.7182818.

Examples

The following statements illustrate the EXP function:

Statements Results

select exp(1.0); 2.718282

select exp(0); 1

See Also

Functions:

“E Function” on page 155

Page 161: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � FLOOR Function 157

FLOOR Function

Returns the largest integer less than or equal to a numeric value expression.

Category: TruncationReturn value data type: DOUBLE

SyntaxFLOOR (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsIf expression is within 1E-12 of an integer, the function returns that integer. Ifexpression is NULL, then the FLOOR function returns NULL. If the result is a numberthat does not fit into the range of a DOUBLE, the FLOOR function fails.

Examples

The following statements illustrate the FLOOR function:

Statements Results

select floor(1.95); 1

select floor(density) from densities; 673063032320383313096247

See Also

Functions:“CEILING Function” on page 142

Page 162: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

158 HOUR Function � Chapter 5

HOUR Function

Returns the hour from a time or datetime value.

Category: Date and timeReturn value data type: TINYINT

SyntaxHOUR(time | datetime)

Arguments

timespecifies any valid expression that represents a time value.Valid data types: TIMESee: “Overview of Expressions and Predicates” on page 201

datetimespecifies any valid expression that represents a datetime value.Valid data types: TIMESTAMPSee: “Overview of Expressions and Predicates” on page 201

ExamplesTable: “CUSTONLINE” on page 313

The following statement illustrates the HOUR function:

Statement Result

select hour(endtime) from custonline; 1022191212161511109

See Also

Functions:“DAY Function” on page 153

Page 163: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � IFNULL Function 159

“MINUTE Function” on page 169

“MONTH Function” on page 171

“SECOND Function” on page 181

“Dates and Times in TSSQL” on page 22

IFNULL Function

Checks the value of the first expression and if it is null or a SAS missing value, returns the secondexpression.

Category: Special

Return value data type: Any data type, depending on the context

Syntax

IFNULL (expression–1, expression–2)

Arguments

expressionspecifies any valid expression.

Valid data types: All data types are valid.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Details

The IFNULL function returns the first expression if it is not null. You can use theIFNULL function to replace a null or SAS missing value value with another value.

Comparisons

The NULLIF expression compares two expressions and returns a null value if the twoexpressions are equal. The IFNULL function checks the value of the first expressionand if it is null, returns the second expression; otherwise, returns the first expression.

Examples

Table: “WORLDCITYCOORDS” on page 312

In the table worldtemps, the city for China in the last row contains a missing value.

Page 164: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

160 KURTOSIS Function � Chapter 5

Statement Result

select ifnull(AvgHigh, 0)as "AvgHigh: 0 indicates null/missing"from worldtemps;

AvgHigh: 0 indicatesnull/missing

90708690978376899089078

See Also

Expressions:

“NULLIF Expression” on page 216

KURTOSIS Function

Returns the kurtosis of all values in an expression.

Category: Aggregate

Descriptive Statistics

Return value data type: DOUBLE

SyntaxKURTOSIS (expression)

Arguments

expressionspecifies any valid SQL expression.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsKurtosis is primarily a measure of the heaviness of the tails of a distribution. Largevalues of Kurtosis indicate that the distribution has heavy tails.

Page 165: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � LOCALTIME Function 161

Null values and SAS missing values are ignored and are not included in thecomputation.

At least four nonnull or nonmissing arguments are required. Otherwise, the functionreturns a null value. If all nonnull or nonmissing arguments have equal values, thekurtosis is mathematically undefined and the KURTOSIS function returns a null value.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “WORLDTEMPS” on page 311

The following statement illustrates the KURTOSIS function:

Statement Result

select kurtosis(AvgLow) from worldtemps; -0.87431

See Also

Functions:

“STDDEV Function” on page 186

SELECT Statement Clauses:

“SELECT Clause” on page 260

“GROUP BY Clause” on page 269

“HAVING Clause” on page 270

LOCALTIME Function

Returns the current time for your time zone.

Category: Date and time

Return value data type: TIME

SyntaxLOCALTIME

Page 166: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

162 LOCALTIMESTAMP Function � Chapter 5

ComparisonsThe LOCALTIME function returns the current time for your time zone. TheCURRENT_TIME function returns the same value. The CURRENT_TIME_GMTfunction returns the current GMT time.

Examples

The following example illustrates the LOCALTIME function:

Statement Result

select localtime; 11:00:49

See Also

Functions:

“CURRENT_DATE Function” on page 149

“CURRENT_TIME Function” on page 149

“CURRENT_TIME_GMT Function” on page 150

“CURRENT_TIMESTAMP Function” on page 151

“CURRENT_TIMESTAMP_GMT Function” on page 152

“LOCALTIMESTAMP Function” on page 162

LOCALTIMESTAMP Function

Returns the date and time for your time zone.

Category: Date and time

Return value data type: TIMESTAMP

SyntaxLOCALTIMESTAMP

ComparisonsThe LOCALTIMETAMP function returns the date and time for your time zone. TheCURRENT_TIMESTAMP function returns the same value.

Examples

The following statement illustrates the LOCALTIMESTAMP function:

Page 167: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � LOG Function 163

Statement Result

select localtimestamp; 30OCT2008:11:00:49

See Also

Functions:

“CURRENT_DATE Function” on page 149

“CURRENT_TIME Function” on page 149

“CURRENT_TIMESTAMP Function” on page 151

“CURRENT_TIMESTAMP_GMT Function” on page 152

“LOCALTIME Function” on page 161

LOG Function

Returns the natural logarithm (base e) of a numeric value expression.

Category: Mathematical

Return value data type: DOUBLE

SyntaxLOG (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the LOG function:

Statements Results

select log(1.0); 0

select log(10.0); 2.302585

Page 168: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

164 LOG10 Function � Chapter 5

See Also

Functions:

“LOG10 Function” on page 164

“LOG2 Function” on page 165

LOG10 Function

Returns the base-10 logarithm of a numeric value expression.

Category: Mathematical

Return value data type: DOUBLE

SyntaxLOG10 (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the LOG10 function:

Statements Results

select log10(1.0); 0

select log10(10.0); 1

select log10(100.0); 2

See Also

Functions:

“LOG Function” on page 163

“LOG2 Function” on page 165

Page 169: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � LOWER Function 165

LOG2 Function

Returns the base-2 logarithm of a numeric value expression.

Category: MathematicalReturn value data type: DOUBLE

SyntaxLOG2 (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the LOG2 function:

Statements Results

select log2(8.0); 3

select log2(4); 2

See Also

Functions:“LOG Function” on page 163“LOG10 Function” on page 164

LOWER Function

Converts all letters in a character expression to lowercase.

Category: CharacterAlias: LOWCASEReturn value data type: The same data type as expression

Page 170: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

166 MAX Function � Chapter 5

SyntaxLOWER(expression)

Arguments

expressionspecifies any valid character expression that evaluates to a character constant,variable, or column.Valid data types: CHAR, VARCHAR, NVARCHAR

DetailsThe LOWER function copies a character argument, converts all uppercase letters tolowercase letters, and returns the altered value as a result.

ComparisonsThe UPPER function converts all letters in a character expression to uppercase. TheLOWER function converts all letters in a character expression to lowercase.

ExamplesTable: “AFEWWORDS” on page 313

The following example illustrates the LOWER function:

Statement Result

select lower(word2) from afewwords; wherethingbody

See Also

Functions:

“UPPER Function” on page 195

MAX Function

Returns the maximum value in a column.

Category: AggregateDescriptive Statistics

Page 171: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � MAX Function 167

Return value data type: the same data type as expression

SyntaxMAX (expression)

Arguments

expressionspecifies any valid SQL expression.Valid data types: All data types are supported.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe MAX function ignores null values and SAS missing values.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ComparisonsThe MIN function returns the minimum value in a column. The MAX function returnsthe maximum value in a column.

ExamplesTable: “DENSITIES” on page 311

The following statement illustrates the MAX function:

Statement Result

select max(population) from densities; 34248705

See Also

Functions:“MIN Function” on page 168

SELECT Statement Clauses:“SELECT Clause” on page 260

Page 172: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

168 MIN Function � Chapter 5

“GROUP BY Clause” on page 269

“HAVING Clause” on page 270

MIN Function

Returns the minimum value in an expression.

Category: Aggregate

Descriptive Statistics

Return value data type: The same data type as expression

SyntaxMIN (expression)

Arguments

expressionspecifies any valid SQL expression.

Valid data types: All data types are supported.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe MIN function ignores null values and SAS missing values.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ComparisonsThe MAX function returns the maximum value in a column. The MIN function returnsthe minimum value in a column.

ExamplesTable: “DENSITIES” on page 311

The following statement illustrates the MIN function:

Page 173: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � MINUTE Function 169

Statement Result

select min(density) from densities; 6.154657

See Also

Functions:“MAX Function” on page 166

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

MINUTE Function

Returns the minute from a time or datetime value.

Category: Date and timeReturn value data type: TINYINT

SyntaxMINUTE(time | datetime)

Arguments

timespecifies any valid expression that represents a time value.Valid data types: TIMESee: “Overview of Expressions and Predicates” on page 201

datetimespecifies any valid expression that represents a datetime value.

Valid data types: TIMESTAMPSee: “Overview of Expressions and Predicates” on page 201

ExamplesTable: “CUSTONLINE” on page 313

The following statement illustrates the MINUTE function:

Page 174: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

170 MOD Function � Chapter 5

Statement Result

select minute(endtime) from custonline; 5214

254765

15356

See Also

Functions:

“DAY Function” on page 153“HOUR Function” on page 158

“MONTH Function” on page 171“SECOND Function” on page 181

“YEAR Function” on page 199“Dates and Times in TSSQL” on page 22

MOD Function

Returns the remainder from the division of the first argument by the second argument, fuzzed toavoid most unexpected floating-point results.

Category: Mathematical

Return value data type: DOUBLE

SyntaxMOD (expression-1, expression-2)

Arguments

expression-1specifies any valid SQL expression that evaluates to a numeric value. This argumentspecifies the dividend.

Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

expression-2

Page 175: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � MONTH Function 171

specifies any valid SQL expression that evaluates to a numeric value. This argumentspecifies the divisor.Restriction: expression-2 cannot be 0Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe MOD function returns the remainder from the division of expression-1 byexpression-2. When the result is non-zero, the result has the same sign as the firstargument. The sign of the second argument is ignored.

The computation that is performed by the MOD function is exact if both of thefollowing conditions are true:

� Both arguments are exact integers.� All integers that are less than either argument have exact 8-byte floating-point

representations.

If either of the above conditions is not true, a small amount of numerical error canoccur in the floating-point computation. In this case

� MOD returns zero if the remainder is very close to zero or very close to the valueof the second argument.

� MOD returns a missing value if the remainder cannot be computed to a precisionof approximately three digits or more. In this case, SAS also writes an errormessage to the log.

Examples

The following statements illustrate the MOD function:

Statements Results

select mod(10,3); 1

select mod(.3,-.1); 0.1

select mod(1.7,.1); 0.1

select mod(.9,.3); 5.55E-17

MONTH Function

Returns the numeric month from a date or datetime value.

Category: Date and timeReturn value data type: TINYINT

SyntaxMONTH(date | datetime)

Page 176: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

172 NMISS Function � Chapter 5

Arguments

datespecifies any valid expression that represents a date value.Valid data types: DATESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

datetimespecifies any valid expression that represents a datetime value.Valid data types: TIMESTAMPSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

ExamplesTable: “CUSTONLINE” on page 313

The following statement illustrates the MONTH function:

Statement Result

select month(endtime) from custonline; 91010111211233

See Also

Functions:“DAY Function” on page 153“HOUR Function” on page 158“MINUTE Function” on page 169“SECOND Function” on page 181“YEAR Function” on page 199

“Dates and Times in TSSQL” on page 22

NMISS Function

Returns the number of null values or SAS missing values in an expression.

Category: Aggregate

Page 177: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � OCTET_LENGTH Function 173

Return value data type: BIGINT

SyntaxNMISS (expression)

Arguments

expressionspecifies any valid SQL expression.Valid data types: CHAR, DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsNMISS indicates the total number of null or SAS missing values.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “WORLDTEMPS” on page 311

The following statement illustrates the NMISS function:

Statement Result

select nmiss(AvgHigh) from worldtemps; 1

See Also

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

“How TSSQL Processes Nulls and SAS Missing Values” on page 12

OCTET_LENGTH FunctionReturns the number of bytes in a string of any data type.

Page 178: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

174 PI Function � Chapter 5

Category: CharacterReturn value data type: BIGINT

SyntaxOCTET_LENGTH (expression)

Arguments

expressionspecifies any valid expression.Valid data types: All data types are valid.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe OCTET_LENGTH function counts a multibyte character as multiple characters.For example, if the specified string contains 6 two-byte characters, theOCTET_LENGTH function will return a value of 12.

If the character string is a bit string, the OCTET_LENGTH function returns thenumber of bytes it takes to hold the number of bits.

ComparisonsThe CHARACTER_LENGTH function also returns the number of characters in acharacter string, but counts a multibyte character as a single character. TheOCTET_LENGTH function counts a multibyte character as multiple characters.

Examples

The following statements illustrate the OCTECT_LENGTH function:

Statements Results

select octect_length(’December’); 8

select octet_length(B’0100011100’); 2

select octet_length(x’FEA364BEA234’); 6

select octet_length(’ SAS Table Server ’); 18

PI Function

Returns the constant value of PI as a floating-point value.

Category: Mathematical

Page 179: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � POWER Function 175

Return value data type: DOUBLE

SyntaxPI ( )

DetailsThe value of PI is 3.141593.

Examples

The following statement illustrates the PI function:

Statement Result

select pi(); 3.141593

POWER Function

Returns the value of a numeric value expression raised to a specified power.

Category: MathematicalReturn value data type: DOUBLE

SyntaxPOWER (numeric_expression, power_numeric_expression)

Arguments

numeric_expressionspecifies any valid SQL expression that evaluates to a numeric value.Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,

TINYINTSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

power_numeric_expressionspecifies any valid SQL expression that evaluates to a numeric value. This argumentis the power value.

DetailsIf numeric_expression is null, then the POWER function returns null. If the result is anumber that does not fit into the range of a DOUBLE, the POWER function fails.

Page 180: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

176 PROBT Function � Chapter 5

ExamplesTable name: “DENSITIES” on page 311

The following statements illustrate the POWER function:

Statements Results

select power(5*3, 2); 225

select name from densitieswhere squaremiles >= power(density,2);

AfghanistanAlgeriaAngolaArgentinaAustralia

PROBT Function

Returns the probability from a t distribution of the values in an expression.

Category: AggregateDescriptive Statistics

Return value data type: DOUBLE

SyntaxPROBT (expression)

Arguments

expressionspecifies any valid SQL expression.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe PROBT function returns the probability that an observation from a Student’s tdistribution, with degrees of freedom n-1 and noncentrality parameter nc equal to 0, isless than or equal to expression.

The significance level of a two-tailed t test is given by

p=(1-probt(abs(x),df))*2;

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in a

Page 181: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � PUT Function 177

GROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ComparisonsThe STUDENTS_T function returns the student’s t-distribution. The PROBT functionreturns the probability that the student’s t-distribution is less than or equal to a givenvalue.

ExamplesTable: “DENSITIES” on page 311

The following statements illustrate the PROBT function:

Statements Results

select probt(density) from densities; 0.006068

select probt(population) from densities; 0.009722

See Also

Functions:

“STUDENTS_T Function” on page 188

SELECT Statement Clauses:

“SELECT Clause” on page 260

“GROUP BY Clause” on page 269

“HAVING Clause” on page 270

PUT Function

Returns a value using a specified format.

Category: Special

Return value data type: NVARCHAR VARBINARY

SyntaxPUT(source, format.)

Page 182: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

178 PUT Function � Chapter 5

Arguments

sourceidentifies the SAS variable or constant whose value you want to reformat.Valid data types: a data type that is supported by format.

format.contains the SAS format that you want applied to the variable or constant that isspecified in the source.

To override the default alignment, you can add an alignment specification to aformat:

-Lleft aligns the value

-Ccenters the value

-Rright aligns the value

Restriction: the format must be the same type as the value of source

DetailsThe result of the PUT function is always a character string. If the source is numeric,the resulting string is right aligned. If the source is character, the result is left aligned.

Use PUT to convert a numeric value to a character value.

ExamplesTable: Worldtemps

The following statement illustrates the PUT function:

Statement Result

select put(AvgLow, 4.1) from worldtemps; column45.033.017.068.056.057.028.051.075.036.033.025.0

See Also

Page 183: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � RANGE Function 179

“Output Formatted Data in TSSQL” on page 36

RADIANS Function

Returns the number of radians converted from a numeric degree value.

Category: TrigonometricReturn value data type: DOUBLE

SyntaxRADIANS (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,

TINYINTSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statement illustrate the RADIANS function:

Statement Result

select radians(360); 6.283185

See Also

Functions:“DEGREES Function” on page 154

RANGE Function

Returns the range between values in an expression.

Category: AggregateDescriptive Statistics

Page 184: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

180 RANGE Function � Chapter 5

Return value data type: the same type as expression

SyntaxRANGE (expression)

Arguments

expressionspecifies any valid SQL expression.

Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,TINYINT

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe RANGE function returns the difference between the largest and the smallestvalues in the specified expression. The RANGE function ignores null values and SASmissing values.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “WORLDTEMPS” on page 311

The following statement illustrates the RANGE function:

Statement Result

select range(AvgHigh) from worldtemps; 27

See Also

SELECT Statement Clauses:

“SELECT Clause” on page 260

“GROUP BY Clause” on page 269

“HAVING Clause” on page 270

Page 185: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � SECOND Function 181

SECOND Function

Returns the second from a time or datetime value.

Category: Date and timeReturn value data type: DOUBLE

SyntaxSECOND(time | datetime )

Arguments

timespecifies any valid expression that represents a time value.Valid data types: TIMESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

datetimespecifies any valid expression that represents a datetime value.Valid data types: TIMESTAMPSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

ExamplesTable: “CUSTONLINE” on page 313

The following statement illustrates the SECOND function:

Statement Result

select second(endtime) from custonline; 1.2539.42155.7469.39845.22115.76656.28833.95527.90820.475

See Also

Functions:“DAY Function” on page 153

Page 186: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

182 SIGN Function � Chapter 5

“HOUR Function” on page 158“MINUTE Function” on page 169“MONTH Function” on page 171

“YEAR Function” on page 199“Dates and Times in TSSQL” on page 22

SIGN Function

Returns a number that indicates the sign of a numeric value expression.

Category: MathematicalReturn value data type: TINYINT

SyntaxSIGN (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,

TINYINTSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe SIGN function returns the following values:

-1 if expression < 0

0 if expression = 0

1 if expression > 0

Examples

The following statements illustrate the SIGN function:

Statements Results

select sign(-5); -1

select sign(5); 1

select sign(0); 0

Page 187: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � SINH Function 183

SIN Function

Returns the trigonometric sine.

Category: TrigonometricReturn value data type: DOUBLE

SyntaxSIN (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the SIN function:

Statements Results

select sin(25.6); 0.450441

select sin(5); -0.95892

SINH Function

Returns the hyperbolic sine.

Category: TrigonometricReturn value data type: DOUBLE

SyntaxSINH (expression)

Arguments

Page 188: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

184 SKEWNESS Function � Chapter 5

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe SINH function returns the hyperbolic sine of the argument, which is given by

����������

� ����������

���

Examples

The following statements illustrate the SINH function:

Statements Results

select sinh(0); 0

select sinh(1); 1.175201

select sinh(-1.0); -1.1752

SKEWNESS Function

Returns the skewness of all values in an expression.

Category: AggregateDescriptive Statistics

Return value data type: DOUBLE

SyntaxSKEWNESS (expression)

Arguments

expressionspecifies any valid SQL expression.Interaction: At least three valid values are required in the column to perform the

calculation. Otherwise the function returns a null value.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Page 189: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � SQRT Function 185

DetailsSkewness is a measure of the tendency of the deviations from the mean to be larger inone direction than in the other. A positive value for skewness indicates that the dataare skewed to the right. A negative value indicates that the data are skewed to the left.

Null values and SAS missing values are ignored and are not included in thecomputation.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “WORLDTEMPS” on page 311

The following statement illustrates the SKEWNESS function:

Statement Result

select skewness(AvgHigh) from worldtemps; -0.69811

See Also

Functions:“STDDEV Function” on page 186

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

SQRT Function

Returns the square root of a value.

Category: MathematicalReturn value data type: DOUBLE

SyntaxSQRT (expression)

Page 190: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

186 STDDEV Function � Chapter 5

Arguments

expressionspecifies any SQL valid expression that evaluates to a nonnegative numeric value.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the SQRT function:

Statements Results

select sqrt(36); 6

select sqrt(25); 5

select sqrt(4.4); 2.097618

STDDEV Function

Returns the statistical standard deviation of all values in an expression.

Category: AggregateDescriptive Statistics

Alias: STDReturn value data type: DOUBLE

SyntaxSTDDEV(expression)

Arguments

expressionspecifies any valid SQL expression.Interaction: At least two valid values are required in the column to perform the

calculation. Otherwise the function returns a null value.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe standard deviation is calculated as the square root of the variance.

Page 191: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � STDERR Function 187

Null values and SAS missing values are ignored and are not included in thecomputation.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “WORLDTEMPS” on page 311

The following statement illustrates the STDDEV function:

Statement Result

select stddev(AvgHigh) from worldtemps; 7.811414

See Also

Functions:“STDERR Function” on page 187“VARIANCE Function” on page 197

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

STDERR Function

Returns the statistical standard error of all values in an expression.

Category: AggregateDescriptive Statistics

Return value data type: DOUBLE

SyntaxSTDERR (expression)

Arguments

Page 192: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

188 STUDENTS_T Function � Chapter 5

expressionspecifies any valid SQL expression.Interaction: At least two valid values are required in the column to perform the

calculation. Otherwise the function returns a null value.Valid data types: DOUBLE

DetailsNull values and SAS missing values are ignored and are not included in thecomputation.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “WORLDTEMPS” on page 311

The following statement illustrates the STDERR function:

Statement Result

select stderr(AvgHigh) from worldtemps; 2.35523

See Also

Functions:“STDDEV Function” on page 186

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

STUDENTS_T Function

Returns the Student’s t distribution of the values in an expression.

Category: AggregateDescriptive Statistics

Alias: TReturn value data type: DOUBLE

Page 193: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � STUDENTS_T Function 189

SyntaxSTUDENTS_T (expression)

Arguments

expressionspecifies any valid SQL expression.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe STUDENTS_T function returns the probability for the Student’s t distribution withn-1 degrees of freedom and a central distribution (nc=0).

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ComparisonsThe STUDENTS_T function returns the Student’s t distribution. The PROBT functionreturns the probability that the Student’s t distribution is less than or equal to a givenvalue.

ExamplesTable: “DENSITIES” on page 311

The following statements illustrate the STUDENTS_T function:

Statements Results

select students_t(density) from densities; 3.565402

select students_t(population) from densities; 3.267438

See Also

Functions:“PROBT Function” on page 176

Page 194: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

190 SUBSTRING Function � Chapter 5

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

SUBSTRING Function

Extracts a substring from a character string.

Category: CharacterReturn value data type: VARCHAR NVARCHAR

SyntaxSUBSTRING(character-string FROM position [FOR length])

Arguments

character-stringspecifies any valid expression that evaluates to a character string. character-string isthe source string that is searched for a substring.Valid data types: CHAR, VARCHAR, NVARCHAR

positionspecifies an integer that is the beginning character position.Interaction: If position is larger than the length of the source string, TSSQL will

return a null value. For example, if you ask for a substring starting at characterfive but the source string is only four characters long, you will get a null result.

lengthspecifies an integer that is the length of the substring to extract.Interaction: If length is zero, a negative value, or larger than the length of the

expression that remains in string after position, TSSQL extracts the remainder ofthe expression.

Tip: If you omit length, TSSQL extracts the remainder of the expression.

DetailsThe SUBSTRING function returns a portion of an expression that you specify incharacter-string. The portion begins with the character that you specify by position, andis the number of characters that you specify in length.

ExamplesTable: “AFEWWORDS” on page 313

The following statement illustrates the SUBSTRING function.

Page 195: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � SUM Function 191

Statement Result

select substring(word2 from 2 for 3); HERHINODY

See Also

Functions:“TRIM Function” on page 194

SUM Function

Returns the sum of all the values in an expression.

Category: AggregateDescriptive Statistics

Return value data type: the same data type as expression

SyntaxSUM (expression)

Arguments

expressionspecifies any valid SQL expression.Requirement: The result of the SUM function must be within the range of the data

type.Valid data types: BIGINT, DOUBLE, FLOAT, INTEGER, REAL, SMALLINT,

TINYINTSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsNull values and SAS missing values are ignored and are not included in thecomputation.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

Page 196: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

192 TAN Function � Chapter 5

ExamplesTable: “DENSITIES” on page 311

The following statements illustrate the SUM function:

Statements Results

select sum(density) from densities; 1728.324

select sum(population) from densities; 1.2278E8

See Also

SELECT Statement Clauses:“SELECT Statement” on page 257“GROUP BY Clause” on page 269“HAVING Clause” on page 270

TAN Function

Returns the tangent.

Category: TrigonometricReturn value data type: DOUBLE

SyntaxTAN (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.Requirement: The expression must evaluate to a value in radians.Restriction: expression cannot be an odd multiple of � /2Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Examples

The following statements illustrate the TAN function:

Page 197: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � TANH Function 193

Statements Results

select tan(0.5); 0.546302

select tan(3.14159/3); 1.732047

See Also

Functions:

“TANH Function” on page 193

TANH Function

Returns the hyperbolic tangent.

Category: Trigonometric

Return value data type: DOUBLE

SyntaxTANH (expression)

Arguments

expressionspecifies any valid SQL expression that evaluates to a numeric value.

Restriction: expression cannot be an odd multiple of �/2

Valid data types: DOUBLE

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe TANH function returns the hyperbolic tangent of the argument, which is given by

����������

� ����������

���������� � �����������

Examples

The following statements are examples of the TANH function.

Page 198: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

194 TRIM Function � Chapter 5

Statements Results

x=tanh(0); 0

x=tanh(0.5); 0.46211715726

select tanh(-0.5); -0.46212

See Also

Functions:

“TAN Function” on page 192

TRIM Function

Removes leading characters, trailing characters, or both from a character string

Category: Character

Return value data type: VARCHAR NVARCHAR

SyntaxTRIM( [BOTH|LEADING|TRAILING] [’trim-character’] FROM column)

Arguments

BOTH|LEADING|TRAILINGspecifies whether to remove the leading characters, the trailing characters or both.

Default: BOTH

trim-characterspecifies one character to remove from column. Enclose a literal character in singlequotation marks. If trim-character is not specified, the TRIM function trims all blankspaces, not just one character.

Default: Blank

Valid data types: CHAR, VARCHAR, NVARCHAR

columnis any valid expression that evaluates to a column name.

DetailsThe TRIM function is useful for trimming character strings of blanks or othercharacters before they are concatenated.

Page 199: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � UPPER Function 195

ExamplesTable: “AFEWWORDS” on page 313

The following statements illustrate the TRIM function.

Statements Results

trim(word1) from afewwords; *some/*every**no*

trim(both ’*’ from word1) from afewwords; someeveryno

trim(leading ’*’ from word1) from afewwords; some/every*no*

trim(trailing ’*’ from word1) from afewwrods; *some/*every*no

See Also

Functions:“SUBSTRING Function” on page 190

UPPER Function

Converts all letters in a character expression to uppercase.

Category: CharacterAlias: UPCASEReturn value data type: The same data type as expression

SyntaxUPPER(expression)

Arguments

expressionspecifies any valid character expression that evaluates to a character constant,variable, or column.

Page 200: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

196 USS Function � Chapter 5

Valid data types: CHAR, VARCHAR, NVARCHAR

DetailsThe UPPER function copies a character argument, converts all lowercase letters touppercase letters, and returns the altered value as a result.

ComparisonsThe LOWER function converts all letters in a character expression to lowercase. The

UPPER function converts all letters in a character expression to uppercase.

ExamplesTable: “AFEWWORDS” on page 313

The following statement illustrates the UPPER function.

Statement Result

select upper(word1) from afewwords; *SOME/*EVERY**NO*

See Also

Functions:

“LOWER Function” on page 165

USS Function

Returns the uncorrected sum of squares of all the values in an expression.

Category: Aggregate

Descriptive Statistics

Return value data type: DOUBLE

SyntaxUSS (expression)

Arguments

Page 201: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � VARIANCE Function 197

expressionspecifies any valid SQL expression.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsNull values and SAS missing values are ignored and are not included in thecomputation.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ComparisonsThe CSS function returns the corrected sum of squares of all values. The USS functionreturns the uncorrected sum of squares.

ExamplesTable: “DENSITIES” on page 311

The following statements illustrate the USS function:

Statements Results

select uss(density) from densities; 510193.4

select uss(population) from densities; 2.778E15

See Also

Functions:“CSS Function” on page 147

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

VARIANCE Function

Returns the measure of the dispersion of all values in an expression.

Page 202: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

198 VARIANCE Function � Chapter 5

Category: AggregateDescriptive Statistics

Return value data type: DOUBLE

SyntaxVARIANCE (expression)

Arguments

expressionspecifies any valid SQL expression.Interaction: At least two values are required to perform the calculation. Otherwise

the function returns a null value.Valid data types: DOUBLESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsNull values and SAS missing values are ignored and are not included in thecomputation.

You can use an aggregate function to produce a statistical summary of data in theentire table that is listed in the FROM clause or for each group that is specified in aGROUP BY clause. The GROUP BY clause groups data by a specified column orcolumns. When you use a GROUP BY clause, the aggregate function in the SELECTclause or in a HAVING clause instructs TSSQL in how to summarize the data for eachgroup. TSSQL calculates the aggregate function separately for each group. If GROUPBY is omitted, then all the rows in the table or view are considered to be a single group.

ExamplesTable: “DENSITIES” on page 311

The following statements illustrate the VARIANCE function:

Statements Results

select variance(density) from densities; 23498.12

select variance(population) from densities; 1.412E14

See Also

Functions:“STDDEV Function” on page 186

Page 203: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Functions � YEAR Function 199

SELECT Statement Clauses:“SELECT Clause” on page 260“GROUP BY Clause” on page 269“HAVING Clause” on page 270

YEAR Function

Returns the year from a date or datetime value.

Category: Date and timeReturn value data type: SMALLINT

SyntaxYEAR(date | datetime)

Arguments

datespecifies any valid expression that represents a date value.Valid data types: DATESee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

datetimespecifies any valid expression that represents a datetime value.Valid data types: TIMESTAMPSee: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

ExamplesTable: “CUSTONLINE” on page 313

The following statement illustrates the YEAR function:

Statement Result

select year(endtime) from custonline; 2007200720072007200720082008200820082008

Page 204: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

200 YEAR Function � Chapter 5

See Also

Functions:“DAY Function” on page 153

“HOUR Function” on page 158“MINUTE Function” on page 169“MONTH Function” on page 171

“SECOND Function” on page 181“Dates and Times in TSSQL” on page 22

Page 205: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

201

C H A P T E R

6TSSQL Expressions andPredicates

Overview of Expressions and Predicates 201Dictionary 202

BETWEEN Predicate 202

CASE Expression 203

COALESCE Expression 206

DISTINCT Predicate 207EXISTS Predicate 208

IN Predicate 209

IS FALSE Predicate 210

IS MISSING Predicate 210

IS NULL Predicate 211

IS TRUE Predicate 212IS UNKNOWN Predicate 213

LIKE Predicate 214

NULLIF Expression 216

<sql-expression> 217

Overview of Expressions and PredicatesExpressions are combinations of symbols and operators that TSSQL evaluates and

returns one value. Expressions can be as simple as a single constant or column or ascomplex as multiple expressions joined by an operator.

This chapter focuses on three conditional expressions, CASE, COALESCE, andNULLIF, and on sql-expression, a generic expression that defines all other types ofexpressions.

Predicates specify conditions that evaluate to either true, false, or unknown. Theyare used most often in the WHERE and HAVING clauses and the FROM clause in joinconditions.

Page 206: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

202 Dictionary � Chapter 6

Dictionary

BETWEEN Predicate

Selects rows where column values are within a range of values.

Category: Predicate

Syntaxexpression [NOT] BETWEEN expression AND expression

Argument

expressionspecifies any valid SQL expression.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsThe BETWEEN predicate specifies a range of column values to select using thesecriteria:

� The SQL expressions must be of compatible data types.

� Because a BETWEEN condition evaluates the boundary values as a range, it isnot necessary to specify the smaller quantity first.

� You can use the NOT logical operator to exclude a range of numbers, for example,to eliminate customer numbers between 1 and 15 (inclusive) so that you canretrieve data on more recently acquired customers.

Examples

select * from invtrywhere invtry.name

between ’A’ and ’Mzzz’;

See Also

Expressions:

“<sql-expression>” on page 217

Page 207: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � CASE Expression 203

CASE Expression

Selects result values that satisfy search conditions and value comparisons.

Category: Expression

SyntaxCASE [case-expression]

WHEN when-expression THEN result-expression…[WHEN when-expression THEN result-expression][ELSE result-expression]

END;

Arguments

case-expressionspecifies any valid SQL expression that evaluates to a table column whose values arecompared to when-expression.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

when-expressionspecifies any valid SQL search condition expression or a value expression.

� When case-expression is not specified, when-expression is a search conditionexpression that evaluates to true or false.

� When case-expression is specified, when-expression is an SQL value expressionthat is compared to case-expression and that evaluates to true or false.

See: “<sql-expression>” on page 217

result-expressionspecifies an SQL expression that evaluates to a value.See: “<sql-expression>” on page 217

DetailsThe CASE expression selects values if certain conditions are met. The case–expressionargument returns a single value that is conditionally evaluated for each row of a table.Use the WHEN-THEN clauses to execute a CASE expression for some, but not all of therows in the table that is being queried or created. The optional ELSE expression givesan alternative action if no THEN expression is executed.

When you omit case-expression, when-expression is evaluated as a Boolean (true orfalse) value. If when-expression returns a nonzero, non-null result, then the WHENclause is true. If case-expression is specified, then it is compared with when-expressionfor equality. If case-expression equals when-expression, then the WHEN clause is true.

If the when-expression is true for the row that is being executed, then theresult-expression that follows THEN is executed. If when-expression is false, thenTSSQL evaluates the next when-expression until they are all evaluated. If every

Page 208: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

204 CASE Expression � Chapter 6

when-expression is false, then TSSQL executes the ELSE expression, and its resultbecomes the CASE expression’s result. If no ELSE expression is present and everywhen-expression is false, then the result of the CASE expression is NULL.

You can use a CASE expression as an item in the SELECT clause and as eitheroperand in an SQL expression.

ComparisonsThe COALESCE expression and the NULLIF expression are variations of the CASEexpression.

The following CASE expression and COALESCE expression are equivalent:

casewhen value1 is not null

then value1when value2 is not null

then value2else value3

end;

coalesce(value1, value2, value3)

The following CASE expression and NULLIF expression are equivalent:

casewhen value1 = -1 then nullelse value1

end;

nullif(value1, -1);

ExamplesTable: “WORLDTEMPS” on page 311

Example 1: The CASE Expression Using A Search Condition

select AvgLow,casewhen AvgLow < 32 then AvgLow + 2when ((AvgLow < 60) and (AvgLow > 32)) then AvgLow + 5when AvgLow > 60 then AvgLow + 10else AvgLow

end;as Adjusted from worldtemps;

Page 209: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � CASE Expression 205

SAS creates the follow table:

AVGLOW ADJUSTED45 5033 3817 1968 7856 6157 6228 3051 5675 8536 4133 3825 27

Example 2: The CASE Expression Using A Value

select Country,case Country

when ’Algeria’ then ’Africa’when ’Nigeria’ then ’Africa’when ’Netherlands’ then ’Europe’when ’Spain’ then ’Europe’when ’Switzerland’ then ’Europe’when ’China’ then ’Asia’when ’India’ then ’Asia’when ’Venezuela’ then ’South America’else ’Unknown’

end;as Continent from worldtemps;

SAS creates the following table:

CITY COUNTRY CONTINENTAlgiers Algeria AfricaAmsterdam Netherlands EuropeBeijing China AsiaBombay India AsiaCalcutta India AsiaCaracas Venezuela South AmericaGeneva Switzerland EuropeHong Kong China AsiaLagos Nigeria AfricaMadrid Spain EuropeShanghai China AsiaZurich Switzerland Europe

See Also

Expressions:“COALESCE Expression” on page 206“NULLIF Expression” on page 216

<search-condition> in the “SELECT Statement” on page 257

Page 210: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

206 COALESCE Expression � Chapter 6

COALESCE Expression

Returns the first non-null value from a list of columns.

Category: Expression

Restrictions: The SPDC and BASE file formats process null values as a blank string.

Syntax

COALESCE (expression [, …expression])

Arguments

expressionspecifies any valid SQL expression.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Details

COALESCE accepts one or more SQL expressions of the same data type. TheCOALESCE expression checks the value of each SQL expression in the order in whichthey are listed and returns the first non-null value. If only one SQL expression is listed,the COALESCE expression returns the value of that SQL expression. If all the valuesof all arguments are null, the COALESCE expression returns a NULL.

In some SQL DBMSs, the COALESCE expression is called the IFNULL expression.

Note: If your query contains a large number of COALESCE expressions, it might bemore efficient to use a natural join instead. For more information, see “Natural Joins”on page 268. �

Comparisons

The COALESCE expression is a variation of the CASE expression. For example, thesetwo sets of code are equivalent,

coalesce(value1, value2, value3)

casewhen value1 is not null

then value1when value2 is not null

then value2else value3

end;

Page 211: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � DISTINCT Predicate 207

See Also

Expressions:

“CASE Expression” on page 203

DISTINCT Predicate

Specifies that only unique rows can appear in the result table.

Category: Predicate

Syntax

function DISTINCT (expression);

row-value-constructor IS DISTINCT FROM row-value-constructor

SELECT DISTINCT <select-list> FROM <table-expression>;

Arguments

functioncan be any aggregate function.

expressionspecifies any valid SQL expression.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

row-value constructorspecifies any row value expression that represents a row value.

See: “Row Value Expressions” on page 21

SELECT <select-list> FROM <table-expression>is a query that retrieves rows from a table.

See: For more information on using the DISTINCT predicate in the SELECTstatement, see “SELECT Clause” on page 260.

Details

You can use the DISTINCT predicate to compare two values or two row values to seewhether they are equal to one another. The DISTINCT predicate evaluates to true onlyif all rows that its subquery returns are distinct.

Note: Two null values are not considered distinct. �

Page 212: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

208 EXISTS Predicate � Chapter 6

Examples

select count(distinct avghigh) from worldtemps;

(42, 47,15) is distinct from (42, 47, 15)

select distinct c1.employee, firstname, salaryfrom company as c1;

See Also

Statements:“SELECT Statement” on page 257

EXISTS Predicate

Tests if a subquery returns one or more rows.

Category: Predicate

Syntax[NOT] EXISTS (select-statement)

Arguments

select-statementspecifies a subquery with the SELECT statement.See: “SELECT Statement” on page 257

DetailsThe EXISTS predicate is an operator whose right operand is a subquery. The result ofan EXISTS predicate is true if the subquery resolves to at least one row. The result of aNOT EXISTS predicate is true if the subquery evaluates to zero rows.

Examples

The following query subsets PAYROLL based on the criteria in the subquery. If thevalue for STAFF.IDNUM is on the same row as the value CT in STAFF, then thematching IDNUM in PAYROLL is included in the output. Thus, the query returns allthe employees from PAYROLL who live in CT.

Page 213: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � IN Predicate 209

select *from payroll pwhere exists (select * from staff s

where p.idnumber=s.idnum and state=’CT’);

See Also

Statements:“SELECT Statement” on page 257

IN Predicate

Tests set membership.

Category: Predicate

Syntaxexpression [NOT] IN (select–statement | constant [, …constant])

Arguments

expressionspecifies any valid SQL expression.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

select-statementspecifies a subquery with the SELECT statement.See: “SELECT Statement” on page 257

constantspecifies a number or a quoted character string (or other special notation) thatindicates a fixed value. Constants are also called literals.

DetailsThe IN predicate tests if the column value that is returned by the SQL expression onthe left is a member of the set (of constants or values returned by the query expression)on the right. The IN condition is true if the value of the operand on the left is in the setof values that are defined by the operand on the right.

The NOT IN predicate negates the returned value.

Examples

select city, countryfrom worldtemps

Page 214: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

210 IS FALSE Predicate � Chapter 6

where avghigh in (90, 97);

IS FALSE PredicateTests for a false value.

Category: Predicate

Syntax(expression) IS [NOT] FALSE

Arguments

expressionspecifies any valid SQL expression.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsIS FALSE is a predicate that tests for a false value. IS FALSE is used in the WHERE,ON, and HAVING clauses. The IS FALSE predicate resolves to true if the result of theSQL expression is false and false if it is true.

ComparisonsThe IS TRUE predicate tests for true values.

Examples

select cityfrom worldcitycoords

where (latitude = 40) is false;

See Also

Predicates:“IS TRUE Predicate” on page 212“IS UNKNOWN Predicate” on page 213

<search-condition> in the “SELECT Statement” on page 257

IS MISSING PredicateTests for a SAS missing value in a SAS native data store.

Page 215: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � IS NULL Predicate 211

Category: Predicate

Syntaxexpression IS [NOT] MISSING

Arguments

expressionspecifies any valid SQL expression.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsIS MISSING is a predicate that tests for a SAS missing value. IS MISSING is used inthe WHERE, ON, and HAVING clauses. The IS MISSING predicate resolves to true ifthe result of the SQL expression is a SAS missing value and false if it is not a SASmissing value.

The IS MISSING predicate is valid only in use with SAS native data stores. OnlyDOUBLE and CHAR data types support missing values.

ComparisonsThe IS NULL predicate tests for NULL values.

Examples

select *from worldcitycoordswhere city is missing;

See Also

Predicates:

“IS NULL Predicate” on page 211

<search-condition> in the “SELECT Statement” on page 257

IS NULL Predicate

Tests for a null value.

Category: Predicate

Page 216: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

212 IS TRUE Predicate � Chapter 6

Syntaxexpression IS [NOT] NULL

Arguments

expressionspecifies any valid SQL expression.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsIS NULL is a predicate that tests for a null value. IS NULL is used in the WHERE,ON, and HAVING clauses. The IS NULL predicate resolves to true if the result of theSQL expression is null and false if it is not null.

ComparisonsThe IS MISSING predicate tests for SAS missing values in SAS native data stores.

Examples

select cityfrom worldcitycoords

where latitude is null;

See Also

Predicates:

“IS MISSING Predicate” on page 210

<search-condition> in the “SELECT Statement” on page 257

IS TRUE Predicate

Tests for a true value.

Category: Predicate

Syntax(expression) IS [NOT] TRUE

Page 217: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � IS UNKNOWN Predicate 213

Arguments

expressionspecifies any valid SQL expression.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

DetailsIS TRUE is a predicate that tests for a true value. IS TRUE is used in the WHERE,ON, and HAVING clauses. The IS TRUE predicate resolves to true if the result of theSQL expression is true and false if it is false.

ComparisonsThe IS FALSE predicate tests for false values.

Examples

select cityfrom worldcitycoords

where (latitude = 40) is true;

See Also

Predicates:“IS FALSE Predicate” on page 210“IS UNKNOWN Predicate” on page 213

IS UNKNOWN Predicate

Tests for an unknown value.

Category: Predicate

Syntaxexpression IS [NOT] UNKNOWN

Arguments

expressionspecifies any valid SQL expression.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Page 218: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

214 LIKE Predicate � Chapter 6

DetailsIS UNKNOWN is a predicate that tests for an unknown value. IS UNKNOWN is usedin the WHERE, ON, and HAVING clauses. The IS UNKNOWN predicate resolves totrue if the result of the SQL expression is unknown and false if it is a valid value.

See Also

Predicates:

“IS FALSE Predicate” on page 210

“IS TRUE Predicate” on page 212<search-condition> in the “SELECT Statement” on page 257

LIKE Predicate

Tests for a matching pattern.

Category: Predicate

Syntaxexpression [NOT] LIKE expression

Arguments

expressionspecifies any valid SQL expression that is either a character string type or a binarystring type.Tip: The SQL expression on the right side of the syntax, that is the pattern, will

most likely be a literal.

See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20

Details

Overview of the LIKE Predicate The LIKE predicate selects rows by comparingcharacter strings with a pattern-matching specification. It resolves to true and displaysthe matched string(s) if the left operand matches the pattern specified by the rightoperand.

Escape characters are not supported.

Note: If no rows are returned, the result is a null value. �

Patterns for Searching Patterns include three classes of characters:

underscore (_)matches any single character.

Page 219: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � LIKE Predicate 215

percent sign (%)matches any sequence of zero or more characters.

any other charactermatches that character.

These patterns can appear before, after, or on both sides of characters that you want tomatch. The LIKE condition is case-sensitive.

The following list uses these values: Smith, Smooth, Smothers, Smart, and Smuggle.

’Sm%’matches Smith, Smooth, Smothers, Smart, Smuggle.

’%th’matches Smith, Smooth.

’S__gg%’matches Smuggle.

’S_o’matches a three-letter word, so it has no matches here.

’S_o%’matches Smooth, Smothers.

’S%th’matches Smith, Smooth.

’M’matches the single, uppercase character m only, so it has no matches here.

Searching for Mixed-Case Strings To search for mixed-case strings, use the UPPERfunction to make all the names uppercase before entering the LIKE condition:

upper(name) like ’SM%’;

Note: When you are using the % character, be aware of the effect of trailing blanks.You might have to use the TRIM function to remove trailing blanks in order to matchvalues. �

Examples

select name, populationfrom densities

where name like ’Al%’;

See Also

Functions:“TRIM Function” on page 194

Page 220: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

216 NULLIF Expression � Chapter 6

NULLIF ExpressionReturns a null value if the two specified expressions are equal; otherwise, returns the firstexpression.

Category: ExpressionRestrictions: The SPDC and BASE file formats process a NULL value as DOUBLEvalues in some situations and as a blank string in other situations. For moreinformation, see “How TSSQL Processes Nulls and SAS Missing Values” on page 12.

SyntaxNULLIF(<sql-expression>, <sql-expression>)

Arguments

expressionspecifies any valid SQL expression.See: “<sql-expression>” on page 217, “TSSQL Expressions” on page 20Valid data type: All data types are valid.

DetailsThe NULLIF expression compares two SQL expressions and, if they are equal, returnsa null value. The NULLIF expression enables you to replace a missing or inapplicablevalues with a null value and to use SQL’s behavior for null values.

ComparisonsThe NULLIF expression is a shorthand syntax for a special CASE expression. Forexample, if a student misses a test, a –1 is entered in the GRADES table. To replacethis -1 with a null value, you could use the following CASE code.

update gradesset testscore =CASE

when testscore = ’-1’ then NULLELSE testscore

END;

The following code uses the shorter NULLIF expression.

update gradesset testscore = NULLIF(testscore, ’-1’);

The IFNULL function compares two SQL expressions and returns the second SQLexpression if the first SQL expression is a null value. The NULLIF expression comparestwo SQL expressions and returns a null value if the two SQL expressions are equal.

Examples

Page 221: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � <sql-expression> 217

missingLong= ’.L’;update worldcitycoordsset longitude = nullif(missingLong, ’.’);select city

from worldcitycoordswhere Longitude=’.L’;

See Also

Expressions:“CASE Expression” on page 203“COALESCE Expression” on page 206

Functions:“IFNULL Function” on page 159

<sql-expression>

Produces a single value from a combination of symbols and operators or predicates.

Category: Expression

Syntax<sql-expression>::=

constant| variable| [alias.]column| function| (scalar-subquery)| (<sql-expression>)| <sql-expression> {operator | predicate} <sql-expression>

Arguments

constantis a number, a quoted character string, or a datetime value that represents a single,specific data value.

variableis the name of a user-defined variable.

aliasis the alias assigned to a table by using the AS keyword in the FROM clause of aSELECT statement.

columnis the name of a column.

Page 222: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

218 <sql-expression> � Chapter 6

functionis a SAS or aggregate function.See: Chapter 5, “TSSQL Functions,” on page 131

scalar-subqueryis a subquery that returns a single value.

operatoris a symbol specifying an action that is performed on one or more expressions. Thefollowing table shows valid operators. An expression can also contain the “CASEExpression” on page 203 or “COALESCE Expression” on page 206.

Operator Description

+ adds

– subtracts

* multiplies

/ divides

= equals

<> does not equal

> is greater than

< is less than

>= is greater than or equal to

<= is less than or equal to

** raises to a power

unary – indicates a negative number

|| concatenates

predicateis an expression that returns true, false, or unknown.

Valid predicates are as follows.“BETWEEN Predicate” on page 202“DISTINCT Predicate” on page 207“EXISTS Predicate” on page 208“IN Predicate” on page 209“IS FALSE Predicate” on page 210“IS MISSING Predicate” on page 210“IS NULL Predicate” on page 211“IS TRUE Predicate” on page 212“IS UNKNOWN Predicate” on page 213“LIKE Predicate” on page 214

Details

Overview of <sql-expression> Simple expressions can be a single constant, variable,column name, or function. Complex expressions are two or more simple expressionsjoined by an operator or predicate.

Page 223: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Expressions and Predicates � <sql-expression> 219

Functions in Expressions An expression can contain a SAS function or an aggregatefunction. SAS functions perform a computation or system manipulation on one or morearguments and return a value. Aggregate functions produce a statistical summary ofdata in the entire table that is listed in the FROM clause or for each group that isspecified in a GROUP BY clause. If GROUP BY is omitted, then all the rows in thetable are considered to be a single group. Aggregate functions reduce all the values ineach row or column in a table to one summarizing or aggregate value. For example, thesum (one value) of a column results from the addition of all the values in the column.

Subqueries in Expressions TSSQL allows a scalar subquery (contained in parentheses)at any point in an expression where a simple column value or constant can be used. Inthis case, a subquery must return a single value, that is, one row with only one column.

Order of Evaluation The operators and predicates shown in the following table arelisted in the order in which they are evaluated.

Table 6.1 Expressions, Operators, and Predicates and Order of Evaluation

Group Expressions, Operators, andPredicates

Description

0 ( ) forces the expression enclosed to be evaluated first

1 CASE expression See “CASE Expression” on page 203

2 ** raises to a power

unary +, unary − indicates a positive or negative number

3 * multiplies

/ divides

4 + adds

− subtracts

5 || concatenates

6 [NOT] BETWEEN predicate See “BETWEEN Predicate” on page 202

DISTINCT predicate “DISTINCT Predicate” on page 207

[NOT] EXISTS predicate See “EXISTS Predicate” on page 208

[NOT] IN predicate See “IN Predicate” on page 209

IS [NOT] TRUE predicate See “IS TRUE Predicate” on page 212

IS [NOT] FALSE predicate See “IS FALSE Predicate” on page 210

IS [NOT] MISSING predicate See “IS MISSING Predicate” on page 210

IS [NOT] NULL predicate See “IS NULL Predicate” on page 211

IS [NOT] UNKNOWN predicate See “IS UNKNOWN Predicate” on page 213

LIKE predicate See “LIKE Predicate” on page 214

7 = equals

^=, <> does not equal

> is greater than

< is less than

>= is greater than or equal to

Page 224: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

220 <sql-expression> � Chapter 6

Group Expressions, Operators, andPredicates

Description

<= is less than or equal to

8 AND indicates logical AND

9 OR indicates logical OR

10 NOT indicates logical NOT

SAS missing values and null values always appear as the smallest value in thecollating sequence.

You can use parentheses to group values or to nest mathematical expressions.Parentheses make expressions easier to read and can also be used to change the orderof evaluation of the operators. Evaluating expressions with parentheses begins at thedeepest level of parentheses and moves outward. For example, SAS evaluates A+B*Cas A+(B*C), although you can add parentheses to make it evaluate as (A+B)*C for adifferent result.

See Also

Statements:

“SELECT Statement” on page 257“TSSQL Expressions” on page 20

Page 225: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

221

C H A P T E R

7TSSQL Informats

Definition of an Informat 221General Informat Syntax 221

How Informats Are Used in TSSQL 222

How to Specify Informats in TSSQL 223

Validation of TSSQL Informats 223

TSSQL Informat Examples 224

Definition of an Informat

An informat is an instruction that determines how values are read into a column.For example, the following value contains a dollar sign and commas:

$1,000,000

To remove the dollar sign ($) and commas (,) before storing the numeric value1000000 in a variable, read this value with the COMMA11. informat.

General Informat Syntax

TSSQL informats have the following form:

[$]informat[w].[d]

Here is an explanation of the syntax:

$indicates a character informat; its absence indicates a numeric informat.

informatnames the informat. The informat is a SAS informat or a user-defined informatthat was previously defined with the INVALUE statement in PROC FORMAT. Formore information on user-defined informats, see PROC FORMAT in the Base SASProcedures Guide.

wspecifies the informat width, which for most informats is the number of columns inthe input data.

dspecifies an optional decimal scaling factor in the numeric informats. SAS dividesthe input data by 10 to the power of d.

Page 226: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

222 How Informats Are Used in TSSQL � Chapter 7

Note: Even though SAS can read up to 31 decimal places when you specify somenumeric informats, floating-point numbers with more than 12 decimal places might loseprecision due to the limitations of the eight-byte floating–point representation used bymost computers. �

Informats always contain a period (.) as a part of the name. If you omit the w andthe d values from the informat, SAS uses default values. If the data contains decimalpoints, SAS ignores the d value and reads the number of decimal places that areactually in the input data.

For more information on how informats work and a complete list of informats, seethe SAS Language Reference: Dictionary.

How Informats Are Used in TSSQL

Informats are informational and will not operate on your data at run time in the SASTable Server environment. The client application is responsible for using the informatto convert the raw data when the table is returned to the application.

Note: If the informat stored in the SAS Table Server environment is invalid, anerror will occur only when the invalid informat is used in the client application. �

Base SAS

DATA step / PROC

validation

SAS catalog

data

informat

SAS Table Server

column metadata

SASinformatuser-defined

informat

An informat is informational only, and is stored as part of the column metadata.

An informat is applied by the client application. In this case, the SAS Table Server LIBNAME engine applies the informat in Base SAS.

SAS Table ServerLIBNAME engine

However, in the SAS Table Server, you can store and retrieve informat names. Theinformat name is associated with a column either temporarily for the duration of anoperation or permanently by storing the informat as a metadata attribute on thecolumn, which then can be retrieved for subsequent operations.

TSSQL supports SAS informats as follows.

� Both informats supplied by SAS and user-defined informats can be associated witha column. For information on how to create your own informat in SAS, see PROCFORMAT in the Base SAS Procedures Guide.

Page 227: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Informats � Validation of TSSQL Informats 223

Note: To create and access user-defined informats, a Base SAS session must beavailable in order to access the SAS catalog file that stores the SAS informatdefinitions. �

� Only the SAS data set and SPD data sets support storing and retrieving aninformat with a column.

� Informats can be associated with all data types, but all data types will beconverted to either CHAR or DOUBLE.

� You can associate SAS informats with a column by using the HAVING clause ofthe TSSQL CREATE TABLE or the SET clause of the TSSQL ALTER TABLEstatement. For more information, see “How to Specify Informats in TSSQL” onpage 223.

For more information and a complete list of informats supplied by SAS, see the sectionon informats in the SAS Language Reference: Dictionary.

How to Specify Informats in TSSQLIn TSSQL, specify informats as an attribute in the HAVING clause of the CREATE

TABLE statement. For example, in the following statement, the column X is declaredwith the IEEE8.2 format and the BITS5.2 informat.

create table a (x double having format ieee8.2 informat bits5.2. label ’foo’);

An informat for a column can also be added (after the column has been declared in aCREATE TABLE statement) by using the SET clause of the ALTER TABLE statement.For example, in the following statements, the column X is declared in the CREATETABLE statement. In the second statement, the BITS5.2 informat is assigned tocolumn X.

create table a (x double);alter table a alter column x set informat bits5.2;

To remove an informat from a column, use the DROP clause of the ALTER TABLEstatement. For example, in the following statement, the BITS5.2 informat is removedfrom column X.

alter table a alter column x drop informat;

Validation of TSSQL InformatsInformats are not validated by a data source or applied to a column until execution

time.When a table is created using the SAS Table Server LIBNAME engine, the engine

will validate the informat name when either an informat supplied by SAS or auser-written informat is used. For more information on using the LIBNAME engine,see SAS Language Interfaces to Table Server.

When a table is created using the SAS Table Server, no validation occurs.When metadata for a column is requested, the informat name will be returned

without validation.

Page 228: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

224 TSSQL Informat Examples � Chapter 7

TSSQL Informat Examples

create table y (x double having label ’price’ format $5. informat $charzb4.3);

alter table y alter column x set format $5 informat $charzb4.3;

alter table y alter column z drop informat;

Page 229: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

225

C H A P T E R

8TSSQL Statements

Overview of Statements 225Dictionary 226

ALTER TABLE Statement 226

ALTER VIEW Statement 230

ANALYZE Statement 232

BEGIN Statement 233COMMIT Statement 234

CREATE INDEX Statement 234

CREATE TABLE Statement 236

CREATE VIEW Statement 249

DELETE Statement 251

DROP INDEX Statement 252DROP TABLE Statement 253

DROP VIEW Statement 254

INSERT Statement 254

ROLLBACK Statement 256

SELECT Statement 257UPDATE Statement 280

Overview of StatementsA TSSQL statement is a series of items that can include keywords, identifiers,

special characters, and operators. All TSSQL statements end with a semicolon.There are three categories of statements:

data definition statements that are used to create, modify, and delete tables andviews.

data control statements that are used to control transactions with the database.

datamanipulation

statements that are used to add, update, and delete data.

Page 230: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

226 Dictionary � Chapter 8

Dictionary

ALTER TABLE Statement

Adds or drops table columns and modifies column definitions.

Category: StatementType: Data definitionSupported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, TeradataRestriction: Constraint syntax is defined by the data source. The constraint syntaxprovided here is a general syntax. For complete constraint syntax, see thedocumentation for your data source. The SPD data source does not support constraints.TSSQL pass-through: Yes

SyntaxALTER TABLE table [ \{OPTIONS SAS-table-option=value [ , …

SAS-table-option=value ]\} ]ADD COLUMN <column definition> [ , … <column definition> ]| ADD CONSTRAINT <table constraint>| ALTER [COLUMN] <column definition> [ , … <column definition> ]| ALTER [COLUMN] column DROP {FORMAT | INFORMAT | LABEL }| SCKEY { ADD ’sckey’ | SET ’old-sckey’ ’new-sckey’ | { DROP ’sckey’ [ FORCE ]} }| DROP COLUMN column [ , … column ] [FORCE]| DROP CONSTRAINT constraint [ , … constraint ];

Note: curly braces in the syntax convention indicate a syntax grouping. The escapecharacter ( \ )before a brace indicates that the curly brace is required in the syntax.Table options must be contained by curly braces ( { } ). �

<column definition> ::=column data-type [ <column constraint> ][ SET | DROP DEFAULT value ][ SET [ FORMAT format ][ INFORMAT informat ][ LABEL ’label ’]]

<column constraint> ::=CONSTRAINT constraint{ CHECK ( search-condition )| PRIMARY KEY| UNIQUE| NOT NULL }

<table constraint> ::=CONSTRAINT constraint

Page 231: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � ALTER TABLE Statement 227

{ CHECK ( search-condition )| PRIMARY KEY ( column [ , … column ])| UNIQUE ( column [ , … column ])| <referential constraint> }[ <constraint check time> ]

<referential constraint> ::=FOREIGN KEY ( referencing-column [ , … referencing-column ])

REFERENCES referenced-table ( referenced-column [ , … referenced-column ])[ <referential trigger action> ]

<referential trigger action > ::={ [ ON UPDATE <referential action> [ ON DELETE <referential action> ]]}| { [ ON DELETE <referential action> [ ON UPDATE <referential action> ]]}

<referential action> ::=CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION

<constraint check time> ::={ DEFERRABLE [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]}| { [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] DEFERRABLE }| INITIALLY DEFERRED| { NOT DEFERRABLE [ INITIALLY IMMEDIATE ]}| { [ INITIALLY IMMEDIATE ]NOT DEFERRABLE }

Arguments

tablespecifies a table to modify. table can be specified in one of these forms

catalog.schema.table-nameschema.table-namecatalog.table-nametable-name

catalogis an implementation of the ANSI SQL standard for an SQL catalog, which is adata container object that groups logically related schemas. The catalog is thefirst-level (top) grouping mechanism in a data organization hierarchy that is usedalong with a schema to provide a means of qualifying names. A catalog is ametadata object in a SAS Metadata Repository.

schemais an implementation of the ANSI SQL standard for an SQL schema, which is adata container object that groups files such as tables and views and other objectssupported by a data source such as stored procedures. The schema provides agrouping object that is used along with a catalog to provide a means of qualifyingnames.

table-nameis the name of the table.

Requirements: Table naming conventions are based on the data source. For moreinformation, see the documentation for your data source.

Page 232: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

228 ALTER TABLE Statement � Chapter 8

{ OPTIONS SAS-table-option=value [, … SAS-table-option=value ]}specifies one or more table options and their respective values to apply to the table.

Requirements: The OPTION argument and all table options must be enclosed incurly braces ( { } ).

See: Chapter 9, “TSSQL Statement Table Options,” on page 283

columnspecifies the name of a column in a table.

Requirement: Each column in a table must be unique.

ADD COLUMN <column definition> [ , … <column definition>]specifies to add a column to a table.

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

See: column on page 228 and “<column-definition> Arguments” on page 238 in theCREATE TABLE statement

ADD CONSTRAINT <table constraint>specifies to add an integrity constraint to one or more columns.

Valid data sources: SAS data set

See: “<column constraint> and <table constraint> Arguments” on page 244 in theCREATE TABLE statement

ALTER [COLUMN] <column definition> [ , … <column definition> ]specifies to modify the definition of one or more columns.

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

See: “<column-definition> Arguments” on page 238 in the CREATE TABLEstatement

See: For the SET clause arguments in <column definition>, see FORMAT,INFORMAT, and LABEL in the HAVING clause of the CREATE TABLE statementon page 243.

ALTER [COLUMN] column DROP {FORMAT | INFORMAT | LABEL}specifies to drop a format, informat, or label from a column definition.

Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, Teradata

See: “column” under Arguments

SCKEY { ADD ’sckey’ | SET ’old-sckey’ ’new-sckey’ | DROP ’sckey’ [ FORCE ]}specifies to add, modify, or drop a security coupling key for READ, WRITE, andALTER access to a SAS or SPD data set. The security coupling key for SAS and SPDdata sets controls access to data sets at the schema level. When SAS or SPD datasets are bound to a specific schema, the data set cannot be accessed by any othermeans except through a SAS Table Server connection to that schema.

ADD ’sckey’specifies a password that allows access to a SAS or SPD data set. sckey can be 1 -32,767 characters that are enclosed in either single or double quotation marks.

SET ’old-sckey’ ’new-sckey’specifies to modify the security coupling key:

’old-sckey’specifies the existing security coupling key.

’new-sckey’specifies a new security coupling key.

Page 233: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � ALTER TABLE Statement 229

Requirement: The old and new security coupling keys must be enclosed ineither single or double quotation marks.

DROP ’sckey’ [ FORCE ]specifies to drop a security coupling key. When FORCE is specified, the securitycoupling key is dropped without error processing. Use the FORCE keyword onlywhen you are certain that dropping the security coupling key without errorprocessing will not negatively impact the table.Requirement: The security coupling key must be enclosed in either single or

double quotation marks.

Valid data sources: SAS data set, SPD data setRequirement: When you use the ALTER TABLE statement to add, modify, or drop

a security coupling key, your connection string cannot specify the SCKEYconnection option.

Requirement: The security coupling key value is case sensitive and must beenclosed in either single or double quotation marks.

See also: “Security Coupling” in SAS Table Server Administrator’s Guide

DROP COLUMN column [ , … column] [ FORCE ]specifies to delete the specified column from the table. When FORCE is specified, thecolumn is dropped from the table without error processing. Use the FORCE keywordonly when you are certain that dropping the column without error processing will notnegatively impact the table.Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle, TeradataSee: “column” under Arguments

DROP CONSTRAINT constraint [ , … constraint ]specifies to delete an integrity constraint.

constraintspecifies the name of the constraint to drop.

Valid data sources: SAS data set

<column definition> ArgumentsSee “<column-definition> Arguments” on page 238 in the CREATE TABLE statement.

<column constraint> and <table constraint> ArgumentsSee “<column constraint> and <table constraint> Arguments” on page 244 in the

CREATE TABLE statement.

Details

Adding and Deleting Columns To add a column to a table use the ALTER TABLEstatement with the ADD COLUMN clause. By using the ADD COLUMN clause youname the column and define the column attributes, such as the column data type, adefault value, and a label for the column.

alter table personal_infoadd column em_num char(16) label=’Emergency Phone Number’;

To delete a column you need only to specify the column name.

alter table personal_info DELETE phone_em;

Page 234: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

230 ALTER VIEW Statement � Chapter 8

Adding and Deleting Constraints You can add a constraint for the table by using theADD CONSTRAINT clause, or you can add or modify a constraint for one or morecolumns. When you add or modify constraints you must know the constraint syntaxthat the data source supports. Constraint validation is performed by the data source.The following code is an example of altering a constraint:

alter table personal_infoalter emp_id constraint pk primary key;

To delete a constraint you specify either the constraint name or the constraint:

alter table personal_infodrop constraint pk;

Altering Column Definitions To alter a column definition, use the ALTER TABLEstatement with the ALTER clause:

alter table personal_infoalter country set default UK, spouse label=’Spouse Name’;

ComparisonsYou use the ALTER TABLE statement to alter a table after it has been created. Use theCREATE TABLE statement to create a table.

See Also

Statements:“CREATE TABLE Statement” on page 236“DROP INDEX Statement” on page 252

“Using Formats in TSSQL” on page 36

ALTER VIEW Statement

Adds, modifies or drops access to a view.

Category: StatementType: Data definitionSupported Data Sources: SAS data set and SPD data setTSSQL pass-through: Yes

SyntaxALTER VIEW view SCKEY

{ ADD ’sckey’ | SET ’old-sckey’ ’new-sckey’ | { DROP ’sckey’ [ FORCE ]} };

Page 235: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � ALTER VIEW Statement 231

Arguments

viewspecifies the name of the view.

Requirement: The view name must be different from any other view, table, orindex in the same database.

SCKEY { ADD ’sckey’ | SET ’old-sckey’ ’new-sckey’ | DROP ’sckey’ [ FORCE ]}specifies to add, modify, or drop a security coupling key for READ, WRITE, andALTER access to a SAS or SPD data set. The security coupling key for SAS and SPDdata sets controls access to data sets at the schema level. When SAS or SPD datasets are bound to a specific schema, the data set cannot be accessed by any othermeans except through a SAS Table Server connection to that schema.

ADD ’sckey’specifies a password that allows access to a SAS or SPD data set. sckey can be 1 -32,767 characters that are enclosed in either single or double quotation marks.

SET ’old-sckey’ ’new-sckey’specifies to modify the security coupling key:

’old-sckey’specifies the existing security coupling key.

’new-sckey’specifies a new security coupling key.

Requirement: The old and new security coupling keys must be enclosed ineither single or double quotation marks.

DROP ’sckey’ [ FORCE ]specifies to drop a security coupling key. When FORCE is specified, the securitycoupling key is dropped without error processing. Use the FORCE keyword onlywhen you are certain that dropping the security coupling key without errorprocessing will not negatively impact the table.

Requirement: The security coupling key must be enclosed in single or doublequotation marks.

Valid data sources: SAS data set, SPD data set

Requirement: The security coupling key value is case sensitive and must beenclosed in single or double quotation marks.

See also: “Security Coupling” in SAS Table Server Administrator’s Guide

DetailsA view can be considered a virtual table. The view is formed by a query expressionagainst one or more tables. Altering a view does not change any data in the database.Only the metadata associated with the view access to a data set is modified.

ComparisonsThe ALTER TABLE statement adds or drops table columns and modifies columndefinitions. The ALTER VIEW statement modifies view access to a data set.

Page 236: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

232 ANALYZE Statement � Chapter 8

See Also

Statements:“ALTER TABLE Statement” on page 226“CREATE VIEW Statement” on page 249“DROP VIEW Statement” on page 254

ANALYZE Statement

Collects statistics about the data content of one table or all tables in the database.

Category: StatementType: Data definitionSupported Data Sources: SPD SPDD file formatTSSQL pass-through: Yes

SyntaxANALYZE table (column [, …column]);

Arguments

tablespecifies the name of the table.

columnspecifies the column name in the table to be analyzed.

DetailsThe ANALYZE statement analyzes the data content of a specified table in the databaseor one or more columns in order to generate statistics that represent the distribution ofvalues. Subsequently, the data distribution statistics are used by the TSSQL processorin order to optimize the performance of queries, such as joins.

The information gathered with the ANALYZE statement is stored as metadata forthe table.

The statistics include the following types of information for the column:

� Cardinality of the data, which is the number of unique, non-null values.� Percentage of the entries that are null, which is the number of null values divided

by the number of rows in the table.� Most common values. The SPD data set stores up to 16 most common values.� Frequency of the most common values, which is the number of occurrences of a

value divided by the total number of rows in the table.� Correlation between the physical row ordering and the logical ordering of the

column values.

Page 237: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � BEGIN Statement 233

Using the ANALYZE statement to gather statistics improves performance of queriesmuch like an index. However, using the ANALYZE statement might be less expensivethan creating, using, and maintaining indexes.

The value distribution statistics generated by the ANALYZE statement represent asnapshot of the data at the time the statement is executed. The statistics are notupdated as the data is updated. Therefore, it is a good idea to run the ANALYZEstatement periodically, especially after major updates to a table. However, if the tablehas not changed since the last time the ANALYZE statement was used, the table doesnot need to be analyzed again.

See Also

Statements:

“CREATE INDEX Statement” on page 234

BEGIN Statement

Marks the beginning of a transaction.

Category: Statement

Type: Data control

Supported Data Sources: MySQL, ODBC, Oracle

TSSQL Pass-through: Yes

SyntaxBEGIN [TRANSACTION];

DetailsThe BEGIN statement marks a point at which the data is logically and physicallyconsistent. If errors are encountered during a transaction, the user can roll back allchanges to the data to this last known state of consistency.

Note: When you use TSSQL processing, this statement is not really necessary. Bydefault, all updates are committed immediately after each request is submitted, and norollback is possible. To change this, you can set either the AUTOCOMMIT=LIBNAMEstatement option to NO or specify the PROC TSSQL NOAUTOCOMMIT connectionoption. But in doing so, you are effectively starting a transaction. �

See Also

Statements:

“COMMIT Statement” on page 234

“ROLLBACK Statement” on page 256

Page 238: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

234 COMMIT Statement � Chapter 8

COMMIT Statement

Makes changes that have been performed since the start of a transaction part of the permanentdatabase.

Category: StatementType: Data controlSupported Data Sources: MySQL, ODBC, OracleTSSQL pass-through: Yes

SyntaxCOMMIT [TRANSACTION];

DetailsWhen your program has completed all of the statements in the transaction, you mustexplicitly terminate the transaction. You use a COMMIT statement to make permanentchanges to the database.

You cannot roll back the changes to the database after the COMMIT statement isexecuted.

Note: The COMMIT statement has an effect only when AUTOCOMMIT is on. Formore information, see the AUTOCOMMIT= LIBNAME statement option or the PROCTSSQL AUTOCOMMIT connection option in SAS Language Interfaces to Table Server. �

ComparisonsThe ROLLBACK statement causes all the changes made by the transaction to be rolledback to the start of the transaction or to the point marked by the BEGIN statement.The COMMIT statement makes all the data changes that have been performed sincethe start of the transaction, part of the permanent database.

See Also

Statements:“BEGIN Statement” on page 233“ROLLBACK Statement” on page 256

CREATE INDEX Statement

Creates an index on columns in a specified table.

Category: StatementType: Data definitionSupported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, Teradata

Page 239: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE INDEX Statement 235

TSSQL pass-through: Yes

SyntaxCREATE [UNIQUE] INDEX index ON table (column [, ...column]);

Arguments

UNIQUEcreates a unique index on a table.

indexspecifies the name of the index.Restriction: For SAS data sets – If you are creating an index on one column only,

then index must be the same as column. If you are creating an index on more thanone column, then index cannot be the same as any column in the table.

tablespecifies the name of the table that contains the column or columns to be indexed.

columnspecifies the name of the column to which the index applies. Specify two or morecolumn names to create a composite index.Tip: If you search two or more columns as a unit or if you have queries that only

involve specific columns, use composite indexes.

Details

Overview of Table Indexes An index stores both the values of a table’s columns and asystem of directions that enable access to rows in that table by index value. Defining anindex on a column or set of columns enables SAS, under certain circumstances, to locaterows in a table more quickly and efficiently. Indexes enable SAS to execute thefollowing classes of queries more efficiently:

� comparisons against a column that is indexed� an IN subquery where the column in the inner subquery is indexed� correlated subqueries, where the column being compared with the correlated

reference is indexed� join-queries, where the join-expression is an equals comparison and all the

columns in the join-expression are indexed in one of the tables being joined

SAS maintains indexes for all changes to the table, whether the changes originatefrom the SAS Table Server or from some other source. Therefore, if you alter a column’sdefinition or update its values, then the same index continues to be defined for it.However, if an indexed column in a table is dropped, then the index on it is also dropped.

You can create simple or composite indexes. A simple index is created on one columnin a table. A simple index must have the same name as that column. A composite indexis one index name that is defined for two or more columns. The columns can bespecified in any order, and they can have different data types. A composite index namecannot match the name of any column in the table. If you drop a composite index, thenthe index is dropped for all the columns named in that composite index.

Only the table owner can create an index on a table.

Page 240: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

236 CREATE TABLE Statement � Chapter 8

UNIQUE Keyword The UNIQUE keyword causes SAS to reject any change to a tablethat would cause more than one row to have the same index value. Unique indexesguarantee that data in one column, or in a composite group of columns, remain uniquefor every row in a table. A unique index can be defined for a column that includes nullor SAS missing values if each row has a unique index value.

Anaylzing Indexes You can use the “ANALYZE Statement” on page 232 statement toanalyze and store the index distribution for every table in the database, but you mustcall ANALYZE for every table and every combination of columns that make up an indexin the database.

See Also

Statements:

“ANALYZE Statement” on page 232“DROP INDEX Statement” on page 252

CREATE TABLE Statement

Creates a new table.

Category: Statement

Type: Data definitionSupported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, TeradataRestriction: Constraint syntax is defined by the data source. The constraint syntaxprovided here is a general syntax. For complete constraint syntax, see thedocumentation for your datasource. The SPD data source does not support constraints.

TSSQL pass-through: Yes

SyntaxCREATE TABLE {table | _NULL_} [\{OPTIONS SAS-table-option=value [ …

SAS-table-option=value ]\} ]| ( <column definition> [ , …. <column definition> | <table-constraint>])| AS subquery-expression

;

Note: Curly braces in the syntax convention indicate a syntax grouping. Theescape character ( \ ) before a curly brace indicates that the curly brace isrequired in the syntax. Table options must be contained by curly braces ( { } ). �

<column definition> ::=column data-type [ <column constraint> ][ DEFAULT value ]

[ HAVING [ FORMAT format ][ INFORMAT informat ][ LABEL ’label’ ]]

Page 241: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE TABLE Statement 237

<column constraint> ::=CONSTRAINT constraint

{ CHECK ( search-condition )

| PRIMARY KEY| UNIQUE| NOT NULL }

<table constraint> ::=CONSTRAINT constraint

{ CHECK ( search-condition )

| PRIMARY KEY ( column [ , … column ])

| UNIQUE ( column [ , … column ])

| <referential constraint> }[ <constraint check time> ]

<referential constraint> ::=FOREIGN KEY ( referencing-column [, … referencing-column ])

REFERENCES referenced-table (referenced-column [ , … referenced-column] )[ <referential trigger action> ]

< referential trigger action> ::=

{ ON UPDATE <referential action> [ ON DELETE <referential action> ]}

| { ON DELETE <referential action> [ ON UPDATE <referential action> ]}

<referential action> ::=

CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION

<constraint checktime> ::=

{ DEFERRABLE [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]}

| { [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] DEFERRABLE }| INITIALLY DEFERRED| { NOT DEFERRABLE [ INITIALLY IMMEDIATE ]}

| { [ INITIALLY IMMEDIATE ] NOT DEFERRABLE }

Arguments

tablespecifies a table to modify. table can be one of these forms

catalog.schema.table-name

schema.table-name

catalog.table-name

table-name

catalogis an implementation of the ANSI SQL standard for an SQL catalog, which is adata container object that groups logically related schemas. The catalog is thefirst-level (top) grouping mechanism in a data organization hierarchy that is usedalong with a schema to provide a means of qualifying names. A catalog is ametadata object in a SAS Metadata Repository.

Page 242: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

238 CREATE TABLE Statement � Chapter 8

schemais an implementation of the ANSI SQL standard for an SQL schema, which is adata container object that groups files such as tables and views and other objectssupported by a data source such as stored procedures. The schema provides agrouping object that is used along with a catalog to provide a means of qualifyingnames.

table-nameis the name of the table.

Requirements: Table naming conventions are based on the data source. For moreinformation, see the documentation for your data source.

_NULL_specifies to test the performance of creating a table using the AS subquery clause.TSSQL creates the table internally as if it were to be saved, writing the normalprogress messages. The table creation appears to be successful. Once the subquery iscomplete, the table is discarded.Interaction: A SELECT select-list FROM _NULL_ statement will return an error.

{ OPTIONS SAS-table-option=value [ … SAS-table-option=value ]}specifies one or more table options and their respective values to apply to the table.Requirements: The OPTION argument and all table options must be enclosed in

curly braces ( { } ).See: Chapter 9, “TSSQL Statement Table Options,” on page 283

AS subquery-expressionspecifies to create a new table from an existing table by selecting rows from theexisting table using a subquery expression. The column attributes, such as formatsand labels, are copied from the existing table to the new table.

subquery-expressionspecifies the SELECT statement that retrieves information from an existing tableto use in creating a new table.Requirement: The number of columns used in the SELECT statement must equal

the number of columns in the table.See: “Creating and Populating Tables From A Subquery” on page 248, “Query

Expressions and Subqueries” on page 20, and “SELECT Statement” on page 257Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,

Oracle, Teradata

<column-definition> Arguments

columnspecifies the name of the column. The column name is either a local or schemaqualified name, using one of these forms:

schema.column-namecolumn-name

schemais an implementation of the ANSI SQL standard for an SQL schema, which is adata container object that groups files such as tables and views and other objectssupported by a data source such as stored procedures. The schema provides agrouping object that is used along with a catalog to provide a means of qualifyingnames.

Page 243: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE TABLE Statement 239

column-nameis the name of the column.

Requirement: Each column in a table must be unique.

Restriction: For SAS data sets and SPD data sets, the column name cannot belonger than 32 characters.

See also: For column name requirements, see the documentation for your datasource.

data-typespecifies the kind of data that the column can store. If the column definition is for aSAS data set or an SPD data set, and the data type is other than CHAR orDOUBLE, TSSQL converts character data types to a CHAR and numeric data typesto DOUBLE. TSSQL supports the following table data types:

BIGINT stores a large signed, exact whole number.

Valid data sources: SPD data set in the SPDD file format, DB2UNIX/PC, MySQL, Oracle, ODBC, Teradata

Storage size: 8 bytes

Range: -9,223,372,036,854,775,808 to 9,233,372,036,854,775,807

CHAR(n)[CHARACTERSET "character-set-identifier"]

stores a fixed-length character string.

nspecifies the number of bytes that are used to store thecharacter string. If the character string is less than n bytes,the value is padded to the right with spaces.

CHARACTER SET "character-set-identifier"specifies character set encoding information for CHAR datatypes.

Default: Default encoding depends on your operating systemand locale.

Restriction: SAS and SPD data sets do not support the use ofCHARACTER SET "character-set-identifier".

See Also: “Values for the LOCALE= System Option” in SASNational Language Support (NLS): Reference Guide

Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,MySQL, Oracle, ODBC, Teradata

Storage size: n bytes

Alias: CHARACTER(n)

Requirement: n must be specified.

DATE stores a date value in the format yyyy-mm-dd.

Date Element Description Valid Values

yyyy a four-digit year 0001 – 9999

mm a two-digit month 01 – 12

dd a two-digit day 00 – 31

Page 244: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

240 CREATE TABLE Statement � Chapter 8

Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,MySQL, Oracle, ODBC, Teradata

Storage size: 8 bytes

DOUBLE stores a signed, approximate, floating point number.Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,

MySQL, Oracle, ODBC, TeradataStorage size: 8 bytesAlias: DOUBLE PRECISION

FLOAT(p) stores a signed, approximate, single-precision or double-precision,floating point number. The user-specified precision determineswhether the data type stores a single precision or double precisionnumber. If the specified precision is equal to or greater than 25,the value is stored as a double precision number, which is aDOUBLE. If the specified precision is less than 25, the value isstored as a single precision number, which is a REAL.

pspecifies the maximum number of digits in the floating pointnumber.

Valid data sources SAS data set, SPD data set, DB2 UNIX/PC,MySQL, Oracle, Teradata

Storage size: 4 bytesTip: If p is not specified a DOUBLE is used.

IDENTITY stores a unique, system-generated integer used by an applicationfor locating a row. The IDENTITY data type is a sequential,ascending identifier.Valid data sources: SPD data set in the SPDD file formatStorage size: 8 bytesSee also: “Identity Column for SPD Data Set” in SAS Table

Server Administrator’s Guide

INTEGER stores an exact whole number.Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,

MySQL, Oracle, ODBC, TeradataStorage size: 4 bytesRange: -2,147,483,648 to 2,147,483,647

NCHAR(n) stores a fixed-length character string by using the Unicodenational character set.

nspecifies the maximum number of multibyte characters thatare used to store the character string. If the character string isless than n bytes, the value is padded to the right with spaces.

Valid data sources: SPD data set in the SPDD file format, DB2UNIX/PC, MySQL, Oracle, ODBC, Teradata

Storage size: n bytes. Depending on the operating system,Unicode characters use either two or four bytes per characterand support all international characters.

Requirement: n must be specified.

NVARCHAR(n) stores a varying-length character string by using the Unicodenational character set.

Page 245: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE TABLE Statement 241

nspecifies the maximum number of multibyte characters thatcan be used to store the character string. The number of bytesthat are stored is the actual number of characters specified, upto n bytes.

Valid data sources: SPD data set in the SPDD file format, DB2UNIX/PC, Oracle, ODBC

Storage size: up to n bytes. Depending on the platform, Unicodecharacters use either two or four bytes per character and cansupport all international characters.

Requirement: n must be specified.

REAL stores a signed, approximate, single-precision, floating-pointnumber.Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,

MySQL, Oracle, ODBC, TeradataStorage size: 4 bytes

SMALLINT stores a small signed, exact whole number.Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,

MySQL, Oracle, ODBC, TeradataStorage size: 2 bytesRange: -32,768 to 32,767

TIME(p) stores a time value with seconds precision.

pspecifies 0 – 6 digits to use for the precision of a fraction of asecond.Default: 0

Time values are in the following form:

hh:mm:ss[.nnnnnn]

TimeElement

Description Valid Values

hh a two-digit hour 00 – 23

mm a two-digit minute 00 – 59

ss a two-digit second 00 – 61

nnnnnn up to six digits to indicate afraction of a second

0 – 999999

Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,MySQL, Oracle, ODBC, Teradata

Storage size: 8 bytes

TIMESTAMP(p) stores both the date and time value with seconds precision.

pspecifies 0 - 6 digits to use for the precision of a fraction of asecond.

Page 246: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

242 CREATE TABLE Statement � Chapter 8

Default: 0

Date and time values are in the following form:

yyyy-mm-dd:hh:mm:ss[.nnnnnn]

TimeElement

Description Valid Values

Date Components

yyyy a four-digit year 0001- 9999

mm a two-digit month 01- 12

dd a two-digit day 01- 31

Time Components

hh a two-digit hour 00 – 23

mm a two-digit minute 00 – 59

ss a two-digit second 00 – 61

nnnnnn up to six digits to indicate afraction of a second

0 – 999999

Storage size: 8 bytes

Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,MySQL, Oracle, ODBC, Teradata

TINYINT stores a very small signed exact, whole number.

Valid data sources: SAS data set, SPD data set, MySQL, Oracle,ODBC, Teradata

Storage size: 1 byte

Range: -128 to 127

VARBINARY(n) stores varying-length binary data.

nspecifies the maximum number of bytes that can be used tostore the binary data. The number of bytes that are used tostore the binary data is the number of bytes that are necessaryto represent the binary data, up to n bytes.

Valid data sources: DB2 UNIX/PC

Storage size: up to n bytes

VARCHAR(n)[CHARACTERSET "character-set-identifier"]

store a varying-length character string.

nspecifies the number of bytes used to store the character string.The number of bytes that are stored is the actual number ofcharacters, up to n bytes.

[CHARACTER SET "character-set-identifier"]specifies character set encoding information for CHAR datatypes.

Page 247: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE TABLE Statement 243

Default: Default encoding depends on your operating systemand locale.

Restriction: SAS and SPD data sets do not support the use ofCHARACTER SET "character-set–identifier".

See Also: “Values for the LOCALE= System Option” in SASNational Language Support (NLS): Reference Guide

Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC,Oracle, ODBC, Teradata

Storage size: up to n bytes

<column constraint>specifies to place an integrity constraint on the column.

See: “<column constraint> and <table constraint> Arguments” on page 244

See also: “Integrity Constraints” on page 248

Valid data sources: SAS data set, DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

DEFAULT valuefor each row that is added to the table, specifies a value for the column that isassumed when no other value is entered for that column.

valuespecifies the default value.

Requirement: value must be in the range of the specified data type.

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

HAVING [ FORMAT format ][ INFORMAT informat ][ LABEL ’label ’ ]specifies a clause that is used to associate a format, informat, or label with thecolumn.

FORMAT formatspecifies a SAS data format that is stored as column metadata. The format is notapplied to the column data until execution time.

formatspecifies a valid SAS data format. If the format is a format other than a TSSQLor TSPL format, it must be a valid format for the Base SAS.

See: Chapter 4, “TSSQL Formats,” on page 33, “TSPL Formats” in SAS TableServer: TSPL Language Reference, and Formats in SAS Language Reference:Dictionary

Explanation: When you create a table you can associate a SAS data format with acolumn. The format is not validated or applied to the column until executiontime, such as in a PUT function. If the format is applied to the column in aBase SAS environment, any format can be stored with the column. If the formatis applied to the column in the SAS Table Server environment, the format mustbe a valid TSSQL or TSPL format.

Restriction: Formats created by PROC FORMAT cannot be stored as columnmetadata.

INFORMAT informatspecifies a SAS data informat that is stored as column metadata. The informat isnot applied to the column data. No validation is done on the informat; it is onlyinformational.

informatspecifies a SAS data informat.

Page 248: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

244 CREATE TABLE Statement � Chapter 8

See: Chapter 7, “TSSQL Informats,” on page 221 and Informats in SASLanguage Reference: Dictionary

LABEL ’text-string’specifies a text string to use as an alternate column heading that appears in placeof the column name in a query result.

Range: 1 - 255 characters

Restriction: A label can be created only with the CREATE TABLE statement andit cannot be used in a query operation.

Requirement: text-string must be enclosed in either double or single quotationmarks. If text-string contains a single quotation mark, enclose text-string withdouble quotation marks.

Valid data sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, Teradata

<column constraint> and <table constraint> Arguments

CONSTRAINTbegins a column constraint or a table constraint.

Valid data sources: SAS data set, DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

constraintspecifies a name to identify the constraint.

See Also: For constraint name requirements, see the documentation for your datasource.

CHECK(search-condition)specifies a condition for values in the column or table. search-condition is a validTSSQL expression that resolves to a Boolean value. If search-condition is false, nochanges are made to the table.

Constraint type: column constraint and table constraint

Valid data sources: SAS data set, DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

Restriction: For a SAS data set, the search condition cannot contain TSSQLfunctions.

See: “TSSQL Expressions” on page 20

PRIMARY KEYspecifies that for each row in the table, the value in the column can be used touniquely identify its respective row in the table. A primary key cannot have a nullvalue and it must be unique for each row in the column. It is a value that does notchange.

Constraint type: column constraint

Valid data sources: SAS data set , DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

PRIMARY KEY(column [, … column])specifies that for each row in the table, the values for all of the columns specified areused to uniquely identify its respective row in the table. A primary key cannot havea null value and it must be unique for each row in the column. It is a value that doesnot change.

Constraint type: table constraint

Valid data sources: SAS data set, DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

Page 249: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE TABLE Statement 245

UNIQUEspecifies that no two rows in the column can have the same value. Mulitple nullvalues are allowed unless you specify NOT NULL.

Constraint type: column constraint

Valid data sources: SAS data set, DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

UNIQUE(column [, … column])specifies that no two rows in any of the specified columns can have the same value.Multiple null values are allowed unless you specify NOT NULL.

Constraint type: table constraint

Valid data sources: SAS data set, DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

NOT NULLspecifies that a null value is not valid in any row for the specified column.

Constraint type: column constraint

Valid data sources: SAS data set, SPD data set in the SPDD file format, DB2UNIX/PC, MySQL, ODBC, Oracle, Teradata

FOREIGN KEY (referencing-column [, … referencing column] )REFERENCES referenced-table (referenced-column [ , … referenced-column<referential trigger action>])specifies the clause that relate columns in table to columns in another table throughthe values for those columns. Foreign keys must always include enough columns touniquely identify a row in the referenced table. Foreign key constraints help toensure the integrity of related data in multiple tables.

FOREIGN KEYbegins the clause that identifies one or more columns in table that relate tocolumns in another table.

referencing-colunmspecifies the columns in table that relate to columns in another table.

REFERENCESbegins the clause that identifies the columns in another table.

referenced-tablespecifies the table whose columns relate to columns in table.

referenced-columnspecifies one or more columns in the referenced table that relate to the columns intable.

<referential trigger action>specifies the action to take in the referenced table when columns in table areupdated or deleted.

ON UPDATE <referential action>specifies the clause for the action to take when a column in table is updated.

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

ON DELETE <referential action>specifies the clause for the action to take when a column in table is deleted.

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle, Teradata

<referential action>specifies the action to take when a column in table is updated or deleted.

Page 250: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

246 CREATE TABLE Statement � Chapter 8

CASCADEON UPDATE, specifies to update all rows in table that reference an updatedvalue in the referenced table. ON DELETE, removes all rows in table thatreference the deleted rows in the referenced table.

SET NULLspecifies to set the referenced columns to a null value.

SET DEFAULTspecifies to set the referenced columns to their default value.

RESTRICTspecifies that if the referential constraint is not satisfied at any time while theTSSQL statement is processing, no action is taken and the update or delete fails.

NO ACTIONspecifies that if the referential constraint is not satisfied at the end of theTSSQL statement, no action is taken and the update or delete fails.

<constraint check time>specifies when the constraint is checked:

DEFERRABLENOT DEFERRABLE

specifies whether the constraint violation check can be performed after thetransaction completes or if it must be checked at the end of each TSSQLstatement. If DEFERRABLE is specified, the constraint check can occur at the endof the transaction. If NOT DEFERRABLE is specified, the constraint must bechecked when the TSSQL statement terminates. Specifying DEFERRABLE isuseful when more than one statement is necessary to complete a transaction.

Default: DEFERRABLE

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle

INITIALLY DEFERREDspecifies that the constraint violation check is deferred, by default, at thebeginning of each transaction and it does not occur until the end of a transaction.

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle

INITIALLY IMMEDIATEspecifies that the constraint violation check occurs at the end of each TSSQLstatement.

Valid data sources: DB2 UNIX/PC, MySQL, ODBC, Oracle

Details

Overview of the CREATE TABLE Statement The CREATE TABLE statement enablesyou to create tables by defining table columns or by selecting columns from an existingtable using a subquery. SAS provides extensions to the CREATE TABLE statement tosupport SAS data sources.

SAS Extensions for the CREATE TABLE Statement To Support SAS Data Sources SASextensions for the CREATE TABLE statement using TSSQL enable you to assignformats and informats to columns, add a label to a column, and create an identitycolumn for SAS SPD data sources, which can be used to easily locate a row in a table.

SAS Formats You can specify that the column data is stored and retrieved as aSAS formatted value by using the HAVING FORMAT clause. If the

Page 251: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE TABLE Statement 247

data type is not either CHAR or DOUBLE, it is converted to eitherCHAR or DOUBLE.

For example, to store the date in the format ddmmmyy, where ddis a two-digit year, mmm is a three-digit month, and yy is a two-digityear, the column definition would specify DOUBLE as the data typeand FORMAT=’DATE7.’. November 1, 2007 would be stored as01Nov07. Your column definition might look like the following:

saleenddate double not null having format date7.;

In comparison, a column that stores date information using theDATE data type stores the date in the format yyyy-mm-dd.November 1, 2007 would be stored as 2007–11–01.

SAS Informats SAS and user-defined informats can be stored and retrieved with thecolumn data by using the HAVING INFORMAT clause. Theinformat is not applied to the data; it is information only. The clientapplication is responsible for applying the informat to the data.Informats can be associated with all data types, but all data typeswill be converted to either CHAR or DOUBLE.

saledates double having informat anydtdte14.;

See: Chapter 7, “TSSQL Informats,” on page 221

Column Labels A label is a descriptive, quoted, text string that displays in queryresults in place of the column name. You specify a label by using theLABEL argument in the HAVING clause:

saleenddate double not null having label ’Last Day of Sale’;

A label cannot be used in a query operation.

Identity Columnfor SPD datasource in theSPDD format

When you create a table for an SPD data set in the SPDD fileformat, one column in the table can have a data type of identity,where the column value is a unique system-generated integer. Anidentity column provides an application with a sequential, ascendingidentifier that can be used for locating a row.

To retrieve rows using an identity column value, you can use theequal to operator as shown in the following WHERE clause:

where idcol = 100;

Defining Columns For a Table When you create columns for a table, the column nameand the data type are required. All other column definition arguments are optional. Forcolumn naming conventions, see the documentation for your data source. TSSQLreserved words cannot be used as column names. For a list of TSSQL reserved words,see “TSSQL Reserved Words” on page 28.

You can add an unspecified number of columns to a table by separating each columndefinition with a comma. Enclose the complete group of column definitions inparenthesis. The following CREATE TABLE statement creates the CUSTOMER table:

create table customer( id double primary key,name char(16),address char(64),city char(16),state char(2),country char(16),

Page 252: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

248 CREATE TABLE Statement � Chapter 8

homephone char(16),workphone char(16),cellphone char(16),initorder double having format date9. label ’Initial Order’

);

Each column definition names the column and assigns a data type. The column IDcontains the primary key integrity constraint, which is used to uniquely identify a tablerow. Data in the INITORDER column is formatted with the DATE9. format, and whenthe column is displayed, the label Initial Order is used in place of the column nameinitorder.

Creating and Populating Tables From A Subquery When you create a table using asubquery, you add rows to the table as the table is created. You use a SELECTstatement to retrieve data from an existing table to create the new table. The numberof columns in the SELECT statement must equal the number of columns in the newtable. If no column names are specified in the SELECT statement, the subquerycolumns and default values are used in the new table.

This CREATE TABLE statement creates a new table based only on three columnsfrom the corpdata table:

create table spainEmailsas select name, emailid, lastPurchaseDate from corpdata where country=’Spain’;

The following CREATE TABLE statement selects all columns from the corpdata table:

create table spainas select * from corpdata where country=’Spain’;

You can test the performance of a subquery before creating a table by using a tablename of _NULL _ for the subquery, as in this example:

create table _null_ as select * from corpdata where country=’Spain’;

TSSQL performs normal processing to create the table and the table appears to becreated. The table is discarded once the subquery is complete.

Data Sources When defining data types using the SAS Table Server languages, inorder for data to be stored, the defined data type must be available for data storage inthat data source. While the SAS Table Server provides support for several data types,the data types that can be defined for a particular table depend on the data source.Each data source does not necessarily support all of the SAS Table Server data types.

In addition, data sources support variations of the standard SQL data types, whichmeans that a specific data type that you specify might default to a different data typeas well as with different attributes in the underlying data source. This is done when adata source does not natively support a specific data type but data values of a similardata type can be converted without data loss. For example, to support the INTEGERdata type, a SAS data set defaults the data type definition to SAS numeric, which is aDOUBLE. For details on data source implementation for each data type such as datasource dependent attributes, see the Data Source Reference section in SAS Table ServerAdministrator’s Guide.

Integrity Constraints Integrity constraints are a set of data validation rules that youcan specify to preserve the validity and consistency of your data. Integrity constraintsthat are specified in the CREATE TABLE statement are passed through to the datasource. When a transaction modifies the table, the data source enforces integrityconstraints.

Page 253: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � CREATE VIEW Statement 249

A column constraint is a constraint that is defined for one column. A table constraintdefines a constraint for two or more columns.

The following statements create SAS data sets using integrity constraints:

� Create a products table using the product ID as the primary key; no two productsIDs can identify the same product, and the product cannot be a null value. Checkconstraints at the end of a transaction:

create table products (prodid double primary key, product char(20)unique not null initially deferred);

� Create a product sales data set with totals in US dollars, and include the country:

create table sales (prodid double primary key, totals double having format dollar7.,country char(30) not null);

� Create a SAS data set for customer credit card information. Customers areuniquely identified by their name and customer number.

create table customer (name char(30),custNum double,ccType char having label ’Credit Card Type’,ccNum double having label ’Credit Card Number’,ccExp date having label ’Expiration Date’,CONSTRAINT ccconst primary key(name, CustNum));

When TSSQL encounters a DATE data type for a SAS data set, it does a typeconversion from DATE to DOUBLE and assigns the DATE9. format to the column.

For information about constraints, see the documentation for your data source.

See Also

Statements:

“ALTER TABLE Statement” on page 226

“DROP TABLE Statement” on page 253

CREATE VIEW Statement

Creates a view of data from one or more tables or other views.

Category: Statement

Type: Data definition

Supported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, Teradata

TSSQL pass-through: Yes

SyntaxCREATE VIEW view AS subquery-expression;

Page 254: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

250 CREATE VIEW Statement � Chapter 8

Arguments

viewspecifies the name of the view being created.Requirement: The view name must be different from any other view, table, or

index in the same database.

subquery-expressionspecifies the SELECT statement that retrieves the information from an existing tablethat is used to create the view.See: “Creating and Populating Tables From A Subquery” on page 248, “Query

Expressions and Subqueries” on page 20, and “SELECT Statement” on page 257

Details

Overview of the CREATE VIEW Statement A view is a definition of a virtual table thatis formed by a query expression against one or more tables or other views. A viewcontains no data. The view definition is stored as metadata and consists of the viewname, possibly the name of the columns in the view, and the query expression used toderive its rows.

If an underlying table or view in a view is deleted, SAS returns an error messagewhen the view is executed. If the underlying table or view is changed, the view mighthave to be recreated.

Access to Views To create a view, you must have CREATE VIEW privilege. As theview owner, you have all privileges for the view, including the ability to grant privilegesto other users. To execute a view, the user must have SELECT privilege on the tablesand views being referenced in the view.

SELECT Statement RestrictionsThe SELECT statement cannot include an ORDER BY clause.

See Also

Statements:“ALTER VIEW Statement” on page 230“CREATE TABLE Statement” on page 236“DROP VIEW Statement” on page 254“SELECT Statement” on page 257

Page 255: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � DELETE Statement 251

DELETE Statement

Deletes rows from a table.

Category: Statement

Type: Data manipulation

Supported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, Teradata

TSSQL pass-through: Yes

SyntaxDELETE FROM table [WHERE <search-condition>];

Arguments

tablespecifies the table from which you are deleting rows.

Tip: You can use ’.*’ after the table name for compatibility with Microsoft Accesstables.

WHERE <search-condition>specifies any valid WHERE clause used to limit the number of rows that are deleted.

See: WHERE clause in the “SELECT Statement” on page 257

DetailsThe DELETE statement deletes the rows that satisfy the WHERE clause from thespecified table. If you do not use a WHERE clause, all rows are deleted.

ComparisonsThe DROP TABLE statement removes the table from the database completely, includingthe table structure. The DELETE statement only deletes the rows (data) in a table.

Note: If row–level permissions are in effect for the table, you cannot delete rowsfrom the table. For more information, see “ SAS Table Server Row–Level Permissions”in SAS Table Server Administrator’s Guide. �

See Also

Statements:

“DROP TABLE Statement” on page 253

“INSERT Statement” on page 254

“UPDATE Statement” on page 280

Page 256: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

252 DROP INDEX Statement � Chapter 8

DROP INDEX Statement

Removes the specified index from a table.

Category: Statement

Type: Data definition

Supported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, Teradata

TSSQL pass-through: Yes

SyntaxDROP INDEX index [FROM table] [FORCE];

Arguments

indexspecifies the name of the index to be removed.

FROM tablespecifies the name of the table where the index resides.

Requirement: For a SAS data set or an SPD data set, you must include the FROMtable syntax in order to specify the name of the table where the index resides.

Requirement: For all data sources, you must include the FROM table syntax if youconnected to the data source using a data source name (DSN) with SAS securityenabled.

FORCEspecifies that the index is removed without error processing. Use the FORCEkeyword only when you are certain that removing the index without error processingwill not negatively impact the table.

DetailsIf you drop a composite index, then the index is removed for all the columns that arenamed in that index.

Note: The DROP INDEX statement does not apply to indexes that were created byusing the PRIMARY KEY or UNIQUE constraints of either the CREATE TABLE orALTER TABLE statements, respectively. To remove those indexes, you must firstremove the constraint by using the ALTER TABLE statement. �

See Also

Statements:

“ALTER TABLE Statement” on page 226

“CREATE INDEX Statement” on page 234

Page 257: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � DROP TABLE Statement 253

DROP TABLE Statement

Removes a table from the database.

Category: StatementType: Data definitionSupported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, TeradataTSSQL pass-through: Yes

SyntaxDROP TABLE table [FORCE];

Arguments

tablespecifies the name of the table to be removed.

FORCEspecifies that the table is dropped without error processing. Use the FORCE keywordonly when you are certain that dropping the table without error processing is whatyou want to do.

DetailsThe DROP TABLE statement removes a table definition and all the table’s data,metadata, and indexes.

If you use the DELETE statement to remove all the rows in a table, the table stillexists until it is removed with the DROP TABLE statement.

You cannot use the DROP TABLE statement to remove a table that is referenced bya foreign key constraint. You must drop the foreign key constraint first, and thenremove the table.

If you remove a table with indexed columns, then all the indexes are automaticallyremoved. If you drop a composite index, then the index is removed for all the columnsthat are named in that index.

You should delete references in queries to any tables that you remove.

ComparisonsThe DELETE statement only deletes the rows (data) in a table. The DROP TABLEstatement removes the table from the database completely, including the table structure.

See Also

Statements:“CREATE TABLE Statement” on page 236“DELETE Statement” on page 251

Page 258: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

254 DROP VIEW Statement � Chapter 8

DROP VIEW Statement

Removes a view from the database.

Category: StatementType: Data definitionSupported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, TeradataTSSQL pass-through: Yes

SyntaxDROP VIEW view [FORCE];

Argumentsview

specifies the name of the view to be removed.

FORCEspecifies that the view is removed without error processing.

DetailsA view can be considered a virtual table. The view is formed by a query expressionagainst one or more tables. Dropping a view does not change any data in the database.Only the metadata associated with the view is deleted.

Any view on a dropped table can be dropped explicitly by using the DROP VIEWstatement.

ComparisonsThe DROP TABLE statement removes a table from the database. The DROP VIEWstatement removes a view from the database.

See Also

Statements:“ALTER VIEW Statement” on page 230“CREATE VIEW Statement” on page 249“DROP TABLE Statement” on page 253

INSERT Statement

Adds rows to a specified table

Category: Statement

Page 259: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � INSERT Statement 255

Type: Data manipulationSupported Data Sources: SAS data set, SPD data set, DB2 UNIX/PC, MySQL, ODBC,Oracle, TeradataTSSQL pass-through: Yes

SyntaxINSERT INTO table

{VALUES (value | NULL [, ...value | NULL]) u

| (column [, ...column]) VALUES (value | NULL [, ...value | NULL]) v

| (column [, ...column]) <query-expression> w

};

Arguments

tablespecifies the name of a table into which you are inserting rows.

valuespecifies a data value to insert into the table.Restriction: There must be one value for each column in the table or for each

column in the column list (column).Requirement: If columns are specified in the column list (column), the data values

list should be in the same order as the column list.

columnspecifies the column into which you are inserting data.Tip: You can specify more than one column. The columns do not have to be in the

same order as they appear in the table as long as the order of the column list andthe data values list match one another.

<query-expression>specifies any valid query expression that returns rows and where the number ofcolumns in each row is the same as the number of items to be inserted.See: “SELECT Statement” on page 257

DetailsuThe form of the INSERT statement that uses the VALUES clause without specifyingcolumn names can be used to insert lists of values into a table. You specify a value foreach column in the table. One row is inserted for each VALUES clause. The order ofthe values in the VALUES clause should match the order of the columns in the table.

vThe form of the INSERT statement that uses the VALUES clause with specificcolumn names can also be used to insert lists of values into a table. You give values forthe columns specified in the list of column names. The column names do not have to bein the same order as they appear in the table, but the order of the values in theVALUES clause must match the order of the column names in the INSERT column list.One row is inserted for each VALUES clause.

Page 260: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

256 ROLLBACK Statement � Chapter 8

If you do not specify the column list, values for every column in the table must beprovided by the VALUES clause.

wThe form of the INSERT statement that uses a query expression inserts rowsselected from another table or tables. The order of the values returned by the queryexpression should match the order of the columns specified in the list of column names.All the rows returned by the query expression are inserted into the table.

The following restrictions should be noted when using this form of the INSERTstatement.

� If you do not specify the column list, values for every column in the table must beprovided by the query expression.

� If you do not specify all columns in the column list, a null value will be insertedfor each column that is not listed.

� If the data type of the column being added does not match the data type of thecolumn in the table, an automatic type conversion will be attempted.

Note: For more info about using the INSERT statement with SPD data sets, see“Identity Column for SPD Data Sets” in SAS Table Server Administrator’s Guide. �

Note: If row–level permissions are in effect for the table, you cannot insert rows intothe table. For more information, see “SAS Table Server Row–Level Permissions” in SASTable Server Administrator’s Guide. �

ComparisonsThe DELETE statement enables you to delete rows from a table. The UPDATEstatement enables you to change rows in a table. The INSERT statement enables youto insert new rows into a table.

See Also

Statements:“DELETE Statement” on page 251“SELECT Statement” on page 257“UPDATE Statement” on page 280

ROLLBACK Statement

Rolls back transaction changes to the beginning of the transaction.

Category: StatementType: Data controlSupported Data Sources: MySQL, ODBC, OracleTSSQL pass-through: Yes

SyntaxROLLBACK [TRANSACTION];

Page 261: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 257

DetailsWhen your program has completed all of the statements in the transaction, you mustexplicitly terminate the transaction. You use a ROLLBACK statement to roll back, orundo, the changes that have been made since the start of the transaction.

You cannot roll back the changes to the database after a COMMIT statement isexecuted.

Note: The ROLLBACK statement has an effect only when AUTOCOMMIT is off.For more information, see the AUTOCOMMIT= LIBNAME statement option or thePROC TSSQL AUTOCOMMIT connection option in SAS Language Interfaces to TableServer. �

ComparisonsThe COMMIT statement makes all the changes that have been performed since the startof the transaction, part of the permanent database. The ROLLBACK statement causesall the changes made by the transaction to be rolled back to the start of the transaction.

See Also

Statements:“BEGIN Statement” on page 233“COMMIT Statement” on page 234

SELECT Statement

Retrieves columns and rows of data from tables.

Category: StatementType: Data definition and data manipulationSupported Data Sources: SAS, SPD, DB2 UNIX/PC, MySQL, ODBC, Oracle, TeradataTSSQL pass-through: No

SyntaxThe main clauses of the SELECT statement can be summarized as follows.

SELECT <select-list>FROM <table-specification>[ WHERE <search-condition>][ GROUP BY <grouping-column>][ HAVING <search-condition>][ ORDER BY <sort-specification>][ LIMIT { count | ALL} ][ OFFSET number]

Page 262: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

258 SELECT Statement � Chapter 8

;

The detailed syntax of the SELECT statement is as follows.

<query-expression>[ ORDER BY <sort-specification> [,... <sort-specification>];

<query-expression>::={<query-specification> | <query-expression>}

{UNION [ALL] | EXCEPT | INTERSECT} {<query-specification> |<query-expression>}

<query-specification>::=SELECT [ALL | DISTINCT] <select-list> <table-expression>

<select-list>::=*| column [[AS] column-alias]| expression [[AS] column-alias]| table.*| table-alias.*

<table-expression>::=FROM <table-specification> [,... <table-specification>][ WHERE <search-condition>][ GROUP BY <grouping-column> [,... <grouping-column>] ][ HAVING <search-condition>]

<table-specification>::=table [ [AS] table-alias]| <joined-table>| <query-specification>

<joined-table>::=<cross-join>| <qualified-join>| <natural-join>

<cross-join>::=<table-specification> CROSS JOIN <table-specification>

<qualified-join>::=<table-specification> [<join-type>] JOIN <table-specification> <join-specification>

<natural-join>::=<table-specification> NATURAL [<join-type>] JOIN <table-specification>

<join-type>::=INNER| LEFT [OUTER]| RIGHT [OUTER]| FULL [OUTER]

<join-specification>::=ON <search-condition>| USING (column [,... column])

Page 263: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 259

<search-condition>::=

{[NOT] {<sql-expression> | (<search-condition>)}

[{AND | OR } [NOT] {<sql-expression> | (<search-condition>)}]}

[,... {[NOT] {<sql-expression> | (<search-condition>)}[{AND | OR} [NOT] {<sql-expression> | (<search-condition>)}]}]

<sql-expression>::=

expression {operator | predicate} expression

<sort-specification>::=

{order-by-expression [ASC | DESC]} [,... order-by-expression [ASC | DESC] ]

<grouping-column>::=

column [,... column]

| column-position-number

| <sql-expression>

ArgumentsSee the following sections for syntax argument descriptions.

“SELECT Clause” on page 260

“FROM Clause” on page 261

“WHERE Clause” on page 268

“GROUP BY Clause” on page 269

“HAVING Clause” on page 270

“ORDER BY Clause” on page 270

“UNION Operator” on page 276

“LIMIT Clause” on page 275

“OFFSET Clause” on page 275

“EXCEPT Operator” on page 276

“INTERSECT Operator” on page 277

DetailsThe SELECT statement can be used in two ways.

� The single row SELECT statement, which can be executed by itself, returns onlyone row.

� A query specification begins with the SELECT keyword (called a SELECT clause)and cannot be used by itself. It must be used as a part of another SQL statementand can return more than one row. A query specification creates a virtual table.

The order of clauses in the SELECT statement is important. The optional clausescan be omitted but when used, they must appear in the appropriate order.

Note: There is no limit on the number of tables that you can reference in a TSSQLquery. However, queries with a large number of table references can cause performanceissues. �

Page 264: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

260 SELECT Statement � Chapter 8

SELECT ClauseLists the columns that will appear in a virtual result table.

SELECT [ALL | DISTINCT] <select-list>

<select-list>::=*| column [[AS] column-alias]| <sql-expression> [[AS] column-alias]| table.*| table-alias.*| <query-specification>

Arguments

ALLincludes all rows, including duplicate rows in the result table.

DISTINCTeliminates duplicate rows in the result table.

<select-list>specifies the columns to be selected for the result table.

*selects all columns in the table that is listed in the FROM clause.

column-aliasassigns a temporary, alternate name to the column.

column [[AS] column-alias]selects a single column. When [AS column-alias] is specified, assigns thecolumn alias to the column.

<sql-expression> [[AS] column-alias]derives a column name from an expression. See “<sql-expression>” on page217.

table.*selects all columns in the table.

table-alias.*selects all columns in table.See: “Table Aliases” on page 262

Asterisk (*) Notation The asterisk (*) represents all columns of the table(s) listed inthe FROM clause. When an asterisk is not prefixed with a table name, all the columnsfrom all tables in the FROM clause are included; when it is prefixed (for example,table.* or table-alias.*), all the columns from only that table are included.

Column Aliases A column alias is a temporary, alternate name for a column. Aliasesare specified in the SELECT clause to name or rename columns in the result table inorder to be clearer or easier to read. Aliases are often used to name a column that isthe result of an arithmetic expression or summary function. An alias is one word only.

The optional keyword AS is often used to distinguish a column alias from othercolumn names.

Column aliases are optional, and each column name in the SELECT clause can havean alias. After you assign an alias to a column, you can use the alias to refer to thatcolumn in other clauses.

Page 265: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 261

FROM ClauseSpecifes the source table.

FROM <table-specification> [,... <table-specification>]

<table-specification>::=table [ [AS] table-alias]| <joined-table>| <query-specification>

<joined-table>::=<cross-join>| <qualified-join>

| <natural-join>

<cross-join>::=<table-specification> CROSS JOIN <table-specification>

<qualified-join>::=<table-specification> [<join-type>] JOIN <table-specification>

<join-specification><natural-join>::=

<table-specification> NATURAL [<join-type>] JOIN <table-specification>

<join-type>::=INNER| LEFT [OUTER]| RIGHT [OUTER]| FULL [OUTER]

<join-specification>::=ON <search-condition>| USING (column [,... column])

Arguments

CROSS JOINdefines a join that is the Cartesian product of two tables.See: “Cross Joins” on page 264

JOINdefines a join that enables you to filter the data by using a search condition or byusing specific columns.See: “Qualified Joins” on page 264

NATURAL JOINdefines a join that selects rows from two tables that have equal values in columnsthat share the same name and the same type.See: “Natural Joins” on page 268

tablespecifies the name of a table.

table-aliasspecifies a temporary, alternate name for table. The AS keyword is optional.

INNER

Page 266: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

262 SELECT Statement � Chapter 8

specifies that only the subset of rows from the first table that matches rows fromthe second table are returned. Unmatched rows from both tables are discarded.

LEFT [OUTER]specifies that matching rows and rows from the first table that do not match anyrow in the second table are returned.

RIGHT [OUTER]specifies that matching rows and rows from the second table that do not matchany row in the first table are returned.

FULL [OUTER]species that all matching and unmatching rows from the first and second table arereturned.

columnspecifies the name of a column.

ON <search-condition>specifies a condition join used to match rows from one table to another. If thesearch condition is satisfied, the matching rows are added to the result table.

See: “<search-condition>” on page 278

USING (column [,...column])specifies which columns to use in an inner or outer join.

See: “ON and USING Clauses” on page 267

Table Aliases A table alias is a temporary, alternate name for a table. Table aliasesare used in joins to distinguish the columns of one table from those in the other table(s)and can make a query easier to read by abbreviating the table names. A table name oralias must be prefixed to a column name when you are joining tables that havematching column names. Column names in reflexive joins (joining a table with itself)must be prefixed with a table alias in order to distinguish which copy of the table thecolumn comes from.

Joined Tables When multiple tables or query expressions are listed in the FROMclause, they are processed to form one table. The result table contains data from eachcontributing table. These queries are referred to as joins. Joins do not alter the originaltable.

Conceptually, when two tables are specified, each row of table A is matched with allthe rows of table B to produce an internal or intermediate table. The number of rows inthe intermediate table (Cartesian product) is equal to the product of the number of rowsin each of the source tables. The intermediate table becomes the input to the rest of thequery in which some of its rows can be eliminated by the WHERE, ON, or USINGclause or summarized by a function.

Specifying the Rows to be Returned The WHERE, ON, and USING clauses containthe conditions under which the rows in the Cartesian product are kept or eliminated inthe result table. WHERE is used to select rows from inner joins. ON is used to selectrows from inner or outer joins. USING is used to select specific columns to be includedin the join. The condition is evaluated for each row from each table in the intermediatetable described in “Joined Tables” on page 262. The row is considered to be a match ifthe result of the expression is true (a nonzero, nonmissing, or null value) for that row.

Simple Joins The most basic type of join is simply two tables that are listed in theFROM clause of a SELECT statement. The following query joins the two tables thatare shown in Output 8.1 and creates the table that is shown in Output 8.2.

Page 267: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 263

select * from product, sales;

Output 8.1 Product and Sales Tables

Productprodid product

-------------------1424 Rice3421 Corn3234 Wheat3485 Oat

Salesprodid total country

-----------------------------------3234 54000 United States1424 75384 Japan3421 19234 Japan3421 39483 United States3975 94823 Argentina

Output 8.2 Simple Join - Product and Sales Table

Simple Join - Product and Salesprodid product prodid total country

--------------------------------------------------------1424 Rice 3234 54000 United States3421 Corn 3234 54000 United States3234 Wheat 3234 54000 United States3485 Oat 3234 54000 United States1424 Rice 1424 75384 Japan3421 Corn 1424 75384 Japan3234 Wheat 1424 75384 Japan3485 Oat 1424 75384 Japan1424 Rice 3421 19234 Japan3421 Corn 3421 19234 Japan3234 Wheat 3421 19234 Japan3485 Oat 3421 19234 Japan1424 Rice 3421 39483 United States3421 Corn 3421 39483 United States3234 Wheat 3421 39483 United States3485 Oat 3421 39483 United States1424 Rice 3975 94823 Argentina3421 Corn 3975 94823 Argentina3234 Wheat 3975 94823 Argentina3485 Oat 3975 94823 Argentina

Joining tables in this way returns the Cartesian product of the tables. Each row fromthe first table is combined with every row of the second table. The number of rows inthe result table is equal to the number of rows in the first table multiplied by thenumber of rows in the second table.

The Cartesian product of a simple join can result in large, meaningless tables. Youcan subset a simple join by using a WHERE clause. This type of simple join is known

Page 268: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

264 SELECT Statement � Chapter 8

as an equijoin. The following query subsets the previous table by matching the productID columns and creates the table shown in Output 8.3.

select *from product, sales

where product.prodid=sales.prodid;

Output 8.3 Equijoin - Product and Sales Table

Equijoin - Product and Salesprodid product prodid total country

-------------------------------------------------------3234 Wheat 3234 54000 United States1424 Rice 1424 75384 Japan3421 Corn 3421 19234 Japan3421 Corn 3421 39483 United States

Cross Joins The cross join functions the same as a simple join; it returns the productof two tables. Like a Cartesian product, a cross join’s output can be limited by aWHERE clause.

The following queries will produce the same result.

select *from product, sales;

select *from product cross join sales;

Note: Do not use an ON clause with a cross join. An ON clause will cause a crossjoin to fail. However, you can use a WHERE clause to subset the output. �

Qualified Joins Qualified joins provide an easier way to control which rows appear inthe result table. You can also further subset the result table with the ON or USINGclause.

The two types of qualified joins are inner and outer.

Inner Joins

An inner join returns a result table for all the rows in one table that have one or morematching rows in another table. Using the tables shown in Output 8.1, the followingquery matches the product ID columns of the two tables and creates the result tableshown in Output 8.4.

select *from product inner join sales

on product.prodid=sales.prodid;

Page 269: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 265

Output 8.4 Inner Join - Product and Sales Table

Inner Join - Product and Salesprodid product prodid total country

-------------------------------------------------------3234 Wheat 3234 54000 United States1424 Rice 1424 75384 Japan3421 Corn 3421 19234 Japan3421 Corn 3421 39483 United States

You can use the ON or USING clause instead of the WHERE clause to specify thecolumn or columns on which you are joining the tables. However, you can continue touse the WHERE clause to subset the query result.

Note that an inner join with an ON or USING clause can provide the samefunctionality as listing tables in the FROM clause and specifying join columns with aWHERE clause (an equijoin). For example, these two sets of code use the inner joinconstruction.

select *from product inner join sales

on product.prodid=sales.prodid;

select *from product inner join sales

using (prodid);

This code produces the same output as the previous code but uses the inner joinconstruction.

select *from product, sales

where product.prodid=sales.prodid;

Outer Joins Outer joins are inner joins that have been augmented with rows from onetable that do not match with any row from the other table in the join. The result tableincludes rows that match and rows that do not match from the join’s source tables.Nonmatching rows have null or missing values in the columns from the unmatchedtable. You can use the ON or USING clause instead of the WHERE clause to specify thecolumn or columns on which you are joining the tables. However, you can continue touse the WHERE clause to subset the query result.

The three types of outer joins are left, right, and full.

Left Outer Joins

A left outer join lists matching rows and rows from the first table listed in the FROMclause that do not match any row in the second table listed in the FROM clause. Usingthe product and sales tables shown in Output 8.1, the following code creates a table

Page 270: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

266 SELECT Statement � Chapter 8

with matching rows from the product and sales tables and the unmatched rows fromthe product table. Note that missing values are shown for sales table data in theunmatched row from the product table.

select *from product left outer join sales

on product.prodid=sales.prodid;

Output 8.5 Left Outer Join -Product and Sales Table

Left Outer Join - Product and Salesprodid product prodid total country

-------------------------------------------------------3234 Wheat 3234 54000 United States1424 Rice 1424 75384 Japan3421 Corn 3421 19234 Japan3421 Corn 3421 39483 United States3485 Oat . .

Right Outer Joins

A right outer join lists matching rows and rows from the second table listed in theFROM clause that do not match any row in the first table listed in the FROM clause.Using the product and sales tables shown in Output 8.1, the following code creates atable with matching rows from the product and sales tables and the unmatched rowsfrom the sales table. Note that missing values are shown for product table data in theunmatched row from the sales table.

select *from product right outer join sales

on product.prodid=sales.prodid;

Output 8.6 Right Outer Join - Product and Sales Table

Right Outer Join - Product and Salesprodid product prodid total country

-------------------------------------------------------1424 Rice 1424 75384 Japan3421 Corn 3421 19234 Japan3421 Corn 3421 39483 United States3234 Wheat 3234 54000 United States

. 3975 94823 Argentina

Page 271: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 267

Full Outer Joins

A full outer join combines the left outer join and the right outer join. The result tablecontains both the matching and unmatching rows from the left and right tables. Usingthe product and sales tables shown in Output 8.1, the following code creates a tablewith matching rows from the product and sales tables and the unmatched rows fromthe product and sales tables. Note that missing values are shown for data in theunmatched rows.

select *from product full outer join sales

on product.prodid=sales.prodid;

Output 8.7 Full Outer Join - Product and Sales Table

Full Outer Join - Product and Salesprodid product prodid total country

--------------------------------------------------------1424 Rice 1424 75384 Japan3234 Wheat 3234 54000 United States3421 Corn 3421 19234 Japan3421 Corn 3421 39483 United States3485 Oat . .

. 3975 94823 Argentina

ON and USING Clauses You can use an ON clause with an expression that specifies acondition on which the join is based. The conditional expression can contain anypredicate, although column names and comparison operators are most often used. TheON clause with an inner join is equivalent to a WHERE clause. The ON clause with anouter join (left, right, or full) is different than a WHERE clause. The ON clause with anouter join filters the rows and then includes the nonmatched rows with the null ormissing values.

You can use a USING clause to specify one of two columns to include in the resulttable.

The difference between the ON clause and the USING clause is that you can use anyconditional expression with the ON clause. The USING clause always implies anequality between the column names. For example, this ON clause eliminates UnitedStates from the results table.

select *from product inner join sales

on sales.country <> ’United States’AND product.prodid=sales.prodid;

Page 272: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

268 SELECT Statement � Chapter 8

Output 8.8 Inner Join - Product and Sales Outside the US

Inner Join - Product and Sales Outside USprodid product prodid total country

-------------------------------------------------------1424 Rice 1424 75384 Japan3421 Corn 3421 19234 Japan

Natural Joins A natural join selects rows from two tables that have equal values incolumns that share the same name and the same type. An error results if two columnshave the same name but different types. You can perform an inner, left, right, or fullnatural join. If join-type is omitted when specifying a natural join, then INNER isimplied. If like columns are not found, then a cross join is performed. You can use aWHERE clause to limit the output.

Using the product and sales tables shown in Output 8.1, the following code performsa natural left outer join.

select *from product natural left outer join sales;

Output 8.9 Natural Left Outer Join - Product and Sales Table

Natural Left Outer Join - Product and Salesprodid product total country

--------------------------------------------------3234 Wheat 54000 United States1424 Rice 75384 Japan3421 Corn 19234 Japan3421 Corn 39483 United States3485 Oat .

Notice that the prodid column only appears once in the result table.

Note: Do not use an ON clause with a natural join. An ON clause will cause anatural join to fail. When using a natural join, an ON clause is implied, matching alllike columns. �

WHERE ClauseSubsets the result table based on the specified search conditions.

WHERE <search-condition>

Arguments

<search-condition>specifies the conditions for the rows returned by the WHERE clause.

See: “<search-condition>” on page 278

Details The WHERE clause requires a search condition (one or more expressionsseparated by an operand or predicate) that specifies which rows are chosen for inclusionin the result table. When a condition is met (that is, the condition resolves to true),those rows are displayed in the result table; otherwise, no rows are displayed.

Page 273: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 269

Note: You cannot use aggregate functions that specify only one column. Forexample, you cannot use the following code.

where max(inventory1)>10000;

However, you can use this WHERE clause.

where max(inventory1, inventory2)>10000;

Note: If a column contains REAL or DOUBLE values, avoid using a WHERE clausewith the = and the < > operators. REAL and DOUBLE values are approximate numericdata types and can give inaccurate results when used in a WHERE clause with the =and the < > operators. You should limit REAL and DOUBLE columns to comparisonswith the > or < operator. �

GROUP BY ClauseSpecifies how to group the data for summarizing.

GROUP BY <grouping-column>[,... <grouping-column>]

<grouping-column>::=column [,... column]| column-position-number| <sql-expression>

Arguments

columnspecifies the name of a column or a column alias.

column-position-numberspecifies a nonnegative integer that equates to a column position.

<sql-expression>specifies a valid SQL expression.See: “<sql-expression>” on page 217

Details The GROUP BY clause groups data by a specified column or columns.If the column or columns on which you are grouping contain missing or null values in

some rows, SAS collects all the rows with missing or null values in the groupingcolumns into a single group.

You can specify more than one grouping column to get more detailed reports. If morethan one grouping column is specified, then the first one determines the major grouping.

Integers can be substituted for column names in the GROUP BY clause. Forexample, if the grouping column is 2, then the results are grouped by values in thesecond column. Note that if you use a floating-point value (for example, 2.3) instead ofan integer, then TSSQL ignores the decimal portion.

You can group the output by the values that are returned by an expression. Forexample, if X is a numeric variable, then the output of the following is grouped by thevalues of X.

select x, sum(y)from table1group by x;

Similarly, if Y is a character variable, then the output of the following is grouped bythe values of Y.

Page 274: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

270 SELECT Statement � Chapter 8

select sum(x), yfrom table1group by y;

When you use a GROUP BY clause, you can also use an aggregate function in theSELECT clause or in a HAVING clause to instruct SAS in how to summarize the datafor each group. When you use a GROUP BY clause without an aggregate function, SAStreats the GROUP BY clause as if it were an ORDER BY clause.

You can use the ORDER BY clause to specify the order in which rows are displayedin the result table. If you do not specify the ORDER BY clause, groups returned by theGROUP BY clause are not in any particular order.

Note: For an SPD data set, utility files are used for certain operations that needextra space. The GROUP BY clause requires a utility file and the Base SAS UTILLOCsystem option allocates space for that utility file. For more information, see “Utility FileWorkspace for SPD Data Set” in the SAS Table Server Administrator’s Guide. �

HAVING ClauseSubsets grouped data based on specified search conditions.

HAVING <search-condition>

Arguments

<search-condition>specifies the conditions for the rows returned by the HAVING clause.See: “<search-condition>” on page 278

Details The HAVING clause requires a search condition (one or more expressionsseparated by an operand or predicate) that specifies which rows are chosen for inclusionin the result table. A HAVING clause evaluates as either true or false for each group ina query. You can use a HAVING clause with a GROUP BY clause to filter grouped data.The HAVING clause affects groups in a way that is similar to the way in which aWHERE clause affects individual rows.

Queries that contain a HAVING clause usually also contain a GROUP BY clause, anaggregate function, or both. When you use a HAVING clause without a GROUP BYclause, SAS treats the HAVING clause as if it were a WHERE clause.

Table 8.1 Differences between the HAVING Clause and WHERE Clause

HAVING clause attributes WHERE clause attributes

typically used to specify conditions for includingor excluding groups of rows from a table

used to specify conditions for including orexcluding individual rows from a table

must follow the GROUP BY clause in a query, ifused with a GROUP BY clause

must precede the GROUP BY clause in a query,if used with a GROUP BY clause

affected by a GROUP BY clause; when there isno GROUP BY clause, the HAVING clause istreated like a WHERE clause

not affected by a GROUP BY clause

processed after the GROUP BY clause and anyaggregate functions

processed before a GROUP BY clause, if there isone, and before any aggregate functions

ORDER BY ClauseSpecifies the order in which rows are returned in a result table.

Page 275: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 271

ORDER BY <sort-specification> [,... <sort-specification>];

<sort-specification>::={order-by-expression [ASC | DESC]} [,... order-by-expression [ASC | DESC]]| {order-by-expression [COLLATE collating-sequence-options]}

[,... order-by-expression [COLLATE collating-sequence-options]]

Arguments

order-by-expressionspecifies a column on which to sort. The sort column can be one of the following.

columnspecifies the name of a column or a column alias.

column-position-numberspecifies a nonnegative integer that equates to a column position.

<sql-expression>specifies any valid SQL expression.See: “<sql-expression>” on page 217

ASCorders the data in ascending order. This is the default order; if ASC or DESC arenot specified, the data is ordered in ascending order.

DESCorders the data in descending order.

COLLATE collating-sequence-optionsspecifies linguistic collation, which sorts characters according to rules of thespecified language. The rules and default collating sequence options are based onthe language specified in the current locale setting. The implementation isprovided by the International Components for Unicode (ICU) library and producesresults that are largely compatible with the Unicode Collation Algorithms (UCA).

The collating-sequence-options argument can be one of the following values:

DANISH | FINNISH | ITALIAN | NORWEGIAN | POLISH | SPANISH |SWEDISH

sorts characters according to the language specified.

LINGUISTIC [collating–rules]collating-rules can be one of the following values:

ALTERNATE_HANDLING=SHIFTEDcontrols the handling of variable characters like spaces, punctuation,and symbols. When this option is not specified (using the default valueNON_IGNORABLE), differences among these variable characters are ofthe same importance as differences among letters. If theALTERNATE_HANDLING option is specified, these variable charactersare of minor importance.Default: NON_IGNORABLETip: The SHIFTED value is often used in combination with

STRENGTH= set to Quaternary. In such a case, spaces, punctuation,and symbols are considered when comparing strings, but only if allother aspects of the strings (base letters, accents, and case) areidentical.

CASE_FIRST=

Page 276: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

272 SELECT Statement � Chapter 8

specify order of uppercase and lowercase letters. This argument is validfor only TERTIARY, QUATERNARY, or IDENTICAL levels. Thefollowing table provides the values and information for theCASE_FIRST argument:

Table 8.2 CASE_FIRST= Values

Value Description

UPPER Sorts uppercase letters first, then the lowercase letters.

LOWER Sorts lowercase letters first, then the uppercase letters.

COLLATION=The following table lists the available COLLATION= values. If you donot select a collation value, then the user’s locale-default collation isselected.

Table 8.3 COLLATION= Values

Value Description

BIG5HAN specifies Pinyin ordering for Latin and specifies big5charset ordering for Chinese, Japanese, and Koreancharacters.

DIRECT specifies a Hindi variant.

GB2312HAN specifies Pinyin ordering for Latin and specifiesgb2312han charset ordering for Chinese, Japanese, andKorean characters.

PHONEBOOK specifies a telephone-book style for ordering ofcharacters. Select PHONEBOOK only with the Germanlanguage.

PINYIN specifies an ordering for Chinese, Japanese, and Koreancharacters based on character-by-charactertransliteration into Pinyin.This ordering is typicallyused with simplified Chinese.

POSIX is the Portable Operating System Interface. This optionspecifies a "C" locale ordering of characters.

STROKE specifies a nonalphabetic writing style ordering ofcharacters. Select STROKE with Chinese, Japanese,Korean, or Vietnamese languages. This ordering istypically used with Traditional Chinese.

TRADITIONAL specifies a traditional style for ordering of characters.For example, select TRADITIONAL with the Spanishlanguage.

LOCALE= locale_namespecifies the locale name in the form of a POSIX name. For example,ja_JP. For more information, see “Values for the LOCALE= SystemOption” in SAS National Language Support (NLS): Reference Guide.

NUMERIC_COLLATION=orders integer values within the text by the numeric value instead ofcharacters used to represent the numbers.

Page 277: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 273

Table 8.4 NUMERIC_COLLATION= Values

Value Description

ON Order numbers by the numeric value. For example, "8Main St." would sort before "45 Main St.".

OFF Order numbers by the character value. For example, "45Main St." would sort before "8 Main St.".

Default: OFF

STRENGTH=The value of strength is related to the collation level. There are fivecollation-level values. The following table provides information aboutthe five levels. The default value for strength is related to the locale.

Table 8.5 STRENGTH= Values

Value Type of Collation Description

PRIMARY or 1 PRIMARY specifies differencesbetween base characters (forexample, "a" < "b").

It is the strongest difference.For example, dictionaries aredivided into differentsections by base character.

SECONDARYor 2

Accents in the characters areconsidered secondarydifferences (for example, "as" <"às" < "at").

A secondary difference isignored when there is aprimary difference anywherein the strings. Otherdifferences between letterscan also be consideredsecondary differences,depending on the language.

TERTIARY or3

Upper and lowercasedifferences in characters aredistinguished at the tertiarylevel (for example, "ao" < "Ao" <"aò").

A tertiary difference isignored when there is aprimary or secondarydifference anywhere in thestrings. Another example isthe difference between largeand small Kana.

Page 278: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

274 SELECT Statement � Chapter 8

QUATERNARYor 4

When punctuation is ignored atlevel 1-3, an additional levelcan be used to distinguishwords with and withoutpunctuation (for example, "ab"< "a-b" < "aB").

The quaternary level shouldbe used if ignoringpunctuation is required orwhen processing Japanesetext. This difference isignored when there is aprimary, secondary ortertiary difference.

IDENTICAL or5

When all other levels are equal,the identical level is used as atiebreaker. The Unicode codepoint values of theNormalization Form D (NFD)form of each string arecompared at this level, just incase there is no difference atlevels 1-4.

This level should be usedsparingly, as only code pointvalues differences betweentwo strings is an extremelyrare occurrence. Forexample, only Hebrewcantillation marks aredistinguished at this level.

Alias: LEVEL=Restriction: Note that linguistic collation is not supported on platforms VMS on

Itanium (VMI) or 64-bit Windows on Itanium (W64).Tip: The collating-rules must be enclosed in parentheses. More than one

collating rule can be specified.See: Appendix 4, “ICU License,” on page 329See: The section on “Linguistic Collation” in the SAS National Language Support

(NLS): Reference Guide for detailed information.See Also: Refer to http://www.unicode.org for the Unicode Collation Algorithm

(UCA) specification.

DetailsThe ORDER BY clause sorts the result of a query expression according to the order

specified in that query. When this clause is used, the default ordering sequence isascending, from the lowest value to the highest.

If an ORDER BY clause is omitted, then a particular order to the output rows, suchas the order in which the rows are encountered in the queried table, cannot beguaranteed. Without an ORDER BY clause, the order of the output rows is determinedby the internal processing of TSSQL, the default collating sequence of SAS, and youroperating environment. Therefore, if you want your result table to appear in aparticular order, then use the ORDER BY clause.

If more than one order-by-expression is specified (separated by commas), then thefirst one determines the major sort order.

Integers can be substituted for column names in the ORDER BY clause. Forexample, if the order-by-expression is 2, then the results are ordered by values in thesecond column. Note that if you use a floating-point value (for example, 2.3) instead ofan integer, then TSSQL issues an error message.

In the ORDER BY clause, you can specify any column of a table that is specified inthe FROM clause of a query expression, regardless of whether that column has beenincluded in the query’s SELECT clause. However, if SELECT DISTINCT is specified, orif the SELECT statement contains a UNION operator, the sort column must appear inthe query’s SELECT clause.

You can group the output by the values that are returned by an expression. Forexample, if X is a numeric variable, then the output of the following is grouped by thevalues of X.

Page 279: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 275

select x, sum(y)from table1group by x;

Similarly, if Y is a character variable, then the output of the following is grouped bythe values of Y.

select sum(x), yfrom table1group by y;

Note: SAS missing values or null values are treated as the lowest possible values. �

Note: For an SPD data set, utility files are used for certain operations that needextra space. The ORDER BY clause requires a utility file and the Base SAS UTILLOCsystem option allocates space for that utility file. For more information, see “Utility FileWorkspace for SPD Data Set” in the SAS Table Server Administrator’s Guide. �

LIMIT ClauseSpecifies the number of rows that the SELECT statement returns.

LIMIT {count | ALL}

Arguments

countspecifies the number of rows that the SELECT statement returns.

Tip: count can be an integer or any simple expression that resolves to an integervalue.

ALLspecifies that all rows are returned.

Details The LIMIT clause can be used alone or in conjunction with the OFFSETclause. The OFFSET clause specifies the number of rows to skip before the SELECTstatement starts to return rows.

Note: When you use the LIMIT clause, it is recommended that you use an ORDERBY clause to create an ordered sequence; otherwise you can get an unpredictable subsetof a query’s rows. �

OFFSET ClauseSpecifies the number of rows to skip before the SELECT statement starts to return rows.

OFFSET number

Arguments

numberspecifies the number of rows to skip.

Tip: number can be an integer or any simple expression that resolves to aninteger value.

Details The OFFSET clause can be used alone or in conjunction with the LIMITclause. The OFFSET clause specifies the number of rows to skip before the SELECTstatement starts to return rows.

Page 280: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

276 SELECT Statement � Chapter 8

Note: When you use the OFFSET clause, it is recommended that you use anORDER BY clause to create an ordered sequence; otherwise you get an unpredictablesubset of a query’s rows. �

UNION OperatorCombines the result of two or more queries into a single result table.

{<query-specification> | <query-expression>}UNION [ALL | DISTINCT] {<query-specification> | <query-expression>}

Arguments

<query-specification> | <query-expression>specifies one or more SELECT statements that produces a virtual table.See: SELECT statement syntax

UNIONspecifies that multiple result tables are combined and returned as a single resulttable.

ALLspecifies that all rows, including duplicates, are included in the result table. If notspecified, all rows are returned.

DISTINCTspecifies that only unique rows can appear in the result table.

See: “DISTINCT Predicate” on page 207

Details The UNION set operator produces a table that contains all the unique rowsthat result from both queries. That is, the result table contains rows produced by thefirst query, the second query, or both.

Columns are appended by position in the tables, regardless of the column names.However, the data type of the corresponding columns must match or the union does notoccur. Also, the number and the order of the columns must be identical in all queries.

The names of the columns in the result table are the names of the columns from thefirst query-expression or query-specification unless a column (such as an expression)has no name in the first query-expression or query-specification. In such a case, thename of that column in the result table is “column”.

The UNION set operator automatically eliminates duplicate rows from its resulttables. The optional ALL keyword preserves the duplicate rows, reduces the executionby one step, and thereby improves the query’s performance. You use it when you wantto display all the rows resulting from the query, rather than just the unique rows. TheALL keyword is used only when a set operator is also specified.

EXCEPT OperatorCombines the result of two or more queries into a single result table that contains onlyrows that are in the first query but not in the second query.

{<query-specification> | <query-expression>}

EXCEPT{

[ALL | DISTINCT]| CORRESPONDING [BY (column [, … column]

Page 281: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 277

}

{<query-specification> | <query-expression>}

Arguments

<query-specification> | <query-expression>specifies one or more SELECT statements that produces a virtual table.See: SELECT statement syntax

EXCEPTspecifies that multiple result tables are combined and only those rows that are inthe first result table and not in the second result table are included.

ALLspecifies that all rows, including duplicates, are included in the result table. If notspecified, all rows are returned.

DISTINCTspecifies that only unique rows can appear in the result table.See: “DISTINCT Predicate” on page 207

CORRESPONDINGspecifies the columns to include in the query.Tip: If you do not specify the BY clause, the result table will include every

column that appears in both of the tables.

BYspecifies that only these columns be included in the result table.

columnspecifies the name of the column.Restriction: Every column must be a valid column in both tables.

Details The EXCEPT set operator produces (from the first query) a result table thathas unique rows that are not in the second query. If the intermediate result from thefirst query has at least one occurrence of a row that is not in the intermediate result ofthe second query, then that row (from the first query) is included in the result table.

The EXCEPT set operator automatically eliminates duplicate rows from its resulttables. The optional ALL keyword preserves the duplicate rows, reduces the executionby one step, and thereby improves the query’s performance. You use it when you wantto display all the rows resulting from the query, rather than just the unique rows. TheALL keyword is used only when a set operator is also specified.

INTERSECT OperatorCombines the result of two or more queries into a single result table that contains onlyrows that are common to both queries.

{<query-specification> | <query-expression>}INTERSECT

{[ALL | DISTINCT]| CORRESPONDING [BY (column [, … column]

}

Page 282: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

278 SELECT Statement � Chapter 8

{<query-specification> | <query-expression>}

Arguments

<query-specification> | <query-expression>specifies one or more SELECT statements that produces a virtual table.

See: SELECT statement syntax

INTERSECTspecifies that multiple result tables are combined and only those rows that arecommon to both result tables are included.

ALLspecifies that all rows, including duplicates, are included in the result table. If notspecified, all rows are returned.

DISTINCTspecifies that only unique rows can appear in the result table.

See: “DISTINCT Predicate” on page 207

CORRESPONDINGspecifies the columns to include in the query.

Tip: If you do not specify the BY clause, the result table will include everycolumn that appears in both of the tables.

BYspecifies that only these columns to be included in the result table.

columnspecifies the name of the column.

Restriction: Every column must be a valid column in both tables.

Details The INTERSECT operator produces a result table that has rows that arecommon to both tables.

The INTERSECT set operator automatically eliminates duplicate rows from its resulttables. The optional ALL keyword preserves the duplicate rows, reduces the executionby one step, and thereby improves the query’s performance. You use it when you wantto display all the rows resulting from the query, rather than just the unique rows. TheALL keyword is used only when a set operator is also specified.

<search-condition>Is a combination of one or more operators and predicates that specifies which rows arechosen for inclusion in the result table.

<search-condition>::=

{[NOT] {<sql-expression> | (<search-condition>)}

[{AND | OR} [NOT] {<sql-expression> | (<search-condition>)}]}

[,... {[NOT] {<sql-expression> | (<search-condition>)}[{AND | OR} [NOT] {<sql-expression> | (<search-condition>)}]}]

<sql-expression>::=

expression {operator | predicate} expression

Page 283: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � SELECT Statement 279

Arguments

NOTnegates a Boolean condition. This table outlines the outcomes when you comparetrue and false values using the NOT operator.

NOT Result

True False

False True

Unkown Unknown

ANDcombines two conditions by finding observations that satisfy both conditions. Thistable outlines the outcomes when you compare TRUE and FALSE values using theAND operator.

AND True False Unknown

True True False Unknown

False False False False

Unknown Unknown False Unknown

ORcombines two conditions by finding observations that satisfy either condition orboth. This table outlines the outcomes when you compare TRUE and FALSEvalues using the OR operator.

OR True False Unknown

True True True True

False True False Unknown

Unknown True Unkown Unknown

<sql-expression>specifies any valid SQL expression.See: “<sql-expression>” on page 217

Details The search condition specifies which rows are returned in a result table for aSELECT statement. Within the SELECT statement, the search condition is used in theWHERE clause, the HAVING clause, and the ON clause with joins.

The order of precedence for the logical operators is NOT, AND, and then OR, but youcan override the order by using parentheses. Everything within the parentheses isevaluated first to yield a single value before that value can be used by any operatoroutside of the parentheses.

There can be precision issues when REAL values are involved in a search condition.To avoid these issues, it is recommended that you define or create a cast for the value in

Page 284: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

280 UPDATE Statement � Chapter 8

the condition. In other words, wherever the value is used in the original query, force acast with this syntax.

CAST (value AS type)

Here are some examples:

select * from test where x = cast (1.0e20 as real);

select cast (1.0e20 as real) from test;

select cast (col1 as real) from test;

Note: The search condition is also used with the UPDATE and DELETE statements.For the UPDATE statement, the search specification specifies which rows are updated.For the DELETE statement, the search specification specifies which rows are deleted. �

See Also

Statements:“DELETE Statement” on page 251“UPDATE Statement” on page 280

UPDATE Statement

Modifies a column’s values in existing rows of a table

Category: StatementType: Data manipulationSupported Data Sources: SAS, SPD, DB2 UNIX/PC, MySQL, ODBC, Oracle, TeradataTSSQL pass-through: No

SyntaxUPDATE table

{SET column=<sql-expression> [, …column=<sql-expression>]

| column=value-expression [, …column=value-expression]}[WHERE <sql-expression> | value-expression];

Arguments

tablespecifies a table name.

column

Page 285: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statements � UPDATE Statement 281

specifies a column name.

<sql-expression>specifies any valid SQL expression.See: “<sql-expression>” on page 217

value-expressionspecifies any valid value expression.

DetailsThe UPDATE statement changes the values in all or part of an existing row in a table.

The SET clause specifies which columns to modify and the values to assign them.Columns that are not SET retain their previous values. In the SET clause, a columnreference on the left side of the equal sign can also appear as part of the expression onthe right side of the equal sign. The SET clause uses the current value of the column inthe expression. For example, you could use this expression to give employees a $1,000holiday bonus.

update payroll set salary = salary + 1000;

The WHERE clause enables you to choose which rows to update. If you omit theWHERE clause, then all the rows are updated. When you use a WHERE clause, onlythe rows that meet the WHERE clause condition are updated.

Note: If row–level permissions are in effect for the table, you cannot update rows inthe table. For more information, see “SAS Table Server Row–Level Permissions” in SASTable Server Administrator’s Guide. �

ComparisonsThe DELETE statement enables you to delete rows from a table. The INSERTstatement enables you to insert new rows into a table. The UPDATE statement enablesyou to change rows in a table.

See Also

Statements:“DELETE Statement” on page 251“INSERT Statement” on page 254WHERE clause in the “SELECT Statement” on page 257

Page 286: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

282

Page 287: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

283

C H A P T E R

9TSSQL Statement Table Options

Overview of Statement Table Options 283About TSSQL Statement Table Options 283

Restrictions 284

Syntax 284

Using TSSQL Statement Table Options 284

How Table Options Interact with Other Types of Options 284Dictionary 285

ALTER= Table Option 285

BL_LOAD_REPLACE= Table Option 285

BL_LOG= Table Option 286

BL_OPTIONS= Table Option 287

BUFNO= Table Option 288BUFSIZE= Table Option 289

BULKLOAD= Table Option 290

BULKOPTS= Table Option 291

COMPRESS= Table Option 292

DBCREATE_TABLE_OPTS= Table Option 293ENCRYPT= Table Option 294

IDXNAME= Table Option 295

IDXWHERE= Table Option 296

LABEL= Table Option 297

LOCKTABLE= Table Option 298PW= Table Option 299

READ= Table Option 300

REUSE= Table Option 300

TYPE= Table Option 301

WRITE= Table Option 303

Overview of Statement Table Options

About TSSQL Statement Table Options

TSSQL statement table options specify actions that apply only to the table withwhich they appear. They enable you to perform operations such as specifying apassword for a SAS file and renaming columns.

You can specify table options on a TSSQL statement on which you specify a tablename, such as the CREATE TABLE, ALTER TABLE, or SELECT statement.

Page 288: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

284 Restrictions � Chapter 9

RestrictionsThe availability and behavior of TSSQL statement options are data-source specific.

SyntaxSpecify a TSSQL statement table option immediately after the table name, within

curly braces (that is, { }) and including the keyword OPTION. To specify several tableoptions, separate them with spaces or commas.

{OPTION option-1=value [… option-n=value] }

These examples show table options in TSSQL statements:

create table salary {option encrypt=yes read=green};

select * from salary {option read=green};

Using TSSQL Statement Table Options

How Table Options Interact with Other Types of OptionsMany types of options share the same name and have the same function. For

example, you can compress a SAS data set by specifying the COMPRESS= table optionas a connection string option and as a TSSQL statement table option.

When more than one type of option with the same function is specified, the softwarehonors the following order of precedence:

1 data source connection string option2 TSSQL statement table option

For example, if a connection string includes COMPRESS=NO, and a TSSQLstatement includes the table option COMPRESS=YES, then the table option overridesthe connection string specification for the named table.

If you are submitting TSSQL statements in a Base SAS session, the following orderof precedence applies:

1 system option2 data source connection string option3 LIBNAME statement option4 TSSQL statement option

That is, TSSQL statement table options override a LIBNAME statement option,which overrides a data source connection string option.

Page 289: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � BL_LOAD_REPLACE= Table Option 285

Dictionary

ALTER= Table Option

Assigns an ALTER password to a SAS data set that prevents users from replacing or deleting thefile, and enables access to a read- or write-protected file.

Valid data sources: SAS data set

SyntaxALTER=alter-password

Syntax Description

alter-passwordspecifies a password.

Restriction: alter-password must be a valid SAS name.

DetailsThe ALTER= table option applies only to a SAS data set. You can use this option toassign a password or to access a read-protected, write-protected, or alter-protected file.When you replace a data set that is protected with an ALTER password, the new dataset inherits the ALTER password.

The password is blotted out when the code is written in the SAS log. For example:

from a(alter=XXXXXXX);

Note: A SAS password does not control access to a SAS file beyond the SAS system.You should use the operating system-supplied utilities and file-system security controlsto control access to SAS files outside of SAS. �

BL_LOAD_REPLACE= Table Option

Specifies whether DB2 will append or replace rows during bulk loading.

Data source support: DB2 UNIX/PC

Default value: NO

Page 290: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

286 BL_LOG= Table Option � Chapter 9

SyntaxBL_LOAD_REPLACE= NO | YES

Syntax Description

NOspecifies that the CLI LOAD interface appends new rows of data to the DB2 table.

YESspecifies that the CLI LOAD interface replaces the existing data in the table.

DetailsTo use this table option you must first specify BULKLOAD=YES.

This table option is specified within the BULKOPTS= container option, for example:

bulkload=yes;bulkopts=(bl_load_replace=yes);

For more information, see “BULKOPTS= Table Option” on page 291.

See AlsoTable Options:

“BULKLOAD= Table Option” on page 290

“BULKOPTS= Table Option” on page 291

BL_LOG= Table Option

Identifies a log file that will contain information such as statistics and error information for a bulkload.

Data source support: DB2 UNIX/PC, Oracle

Default value: DBMS-specific

SyntaxBL_LOG= "path-and-log-filename"

Syntax Description

path-and-log-filenameis a file to which information about the loading process is written.

Page 291: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � BL_OPTIONS= Table Option 287

DetailsWhen the DBMS bulk load facility is invoked, it creates a log file. The contents of the

log file are DBMS-specific. The BL_ prefix distinguishes this log file from the onecreated by the SAS log. If the BL_LOG= table option is specified with the same pathand filename as an existing log, the new log replaces the existing log.

To specify this table option, you must first specify BULKLOAD=YES.If the BL_LOG= table option is not specified, the log file is deleted automatically

after a successful operation.This option is specified with the BULKOPTS= container option, for example:

bulkload=yes;bulkopts=(bl_log="c:\temp\bulkload.log");

For more information, see “BULKOPTS= Table Option” on page 291.

See AlsoTable Options:

“BULKLOAD= Table Option” on page 290

“BULKOPTS= Table Option” on page 291

BL_OPTIONS= Table Option

Passes options to the DBMS bulk load facility, affecting how it loads and processes data.

Data source support: DB2 UNIX/PC

Default value: none

SyntaxBL_OPTIONS=’option [, …option ]’

Syntax Description

optionspecifies a valid DB2 option.

DetailsThe BL_OPTIONS= table option enables you to pass options to the DBMS bulk loadfacility when it is invoked, thereby affecting how data is loaded and processed. Youmust separate multiple options with commas and enclose the entire string of options insingle quotation marks.

To specify this option you must first specify BULKLOAD=YES. This option passesDB2 file type modifiers to DB2 LOAD or IMPORT commands to affect how data isloaded and processed. Not all DB2 file type modifiers are appropriate for all situations.You can specify one or more DB2 file type modifiers with .IXF files. For a list of file type

Page 292: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

288 BUFNO= Table Option � Chapter 9

modifiers, see the description of the LOAD and IMPORT utilities in the DB2 DataMovement Utilities Guide and Reference.

This option is specified with the BULKOPTS= container option, for example:

bulkload=yes;bulkopts=(bl_options=’option1, option2’);

For more information, see “BULKOPTS= Table Option” on page 291.

ExamplesIn the following Oracle example, the BL_OPTIONS= table option specifies the numberof errors that are permitted during a load of 2,000 rows of data. Notice that the entirelisting of options is enclosed in quotation marks.

bulkopts(bl_options=’ERRORS=999,LOAD=2000’);

See AlsoTable Options:

“BULKLOAD= Table Option” on page 290

“BULKOPTS= Table Option” on page 291

BUFNO= Table Option

Specifies the number of buffers to be allocated for processing a SAS data set.

Valid data sources: SAS data set

SyntaxBUFNO= n | nK | hexX | MIN | MAX

Syntax Description

n | nKspecifies the number of buffers in multiples of 1 (bytes); 1,024 (kilobytes). Forexample, a value of 8 specifies 8 buffers, and a value of 1K specifies 1024 buffers.

Requirement: K must be uppercased.

hexXspecifies the number of buffers as a hexadecimal value. You must specify the valuebeginning with a number (0-9), followed by an X. For example, the value 2dX sets thenumber of buffers to 45 buffers.

Requirement: X must be uppercased.

MINsets the minimum number of buffers to 0, which causes SAS to use the minimumoptimal value for the operating environment. This is the default.

Page 293: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � BUFSIZE= Table Option 289

MAXsets the number of buffers to the maximum possible number in your operatingenvironment, up to the largest four-byte, signed integer, which is 231-1, orapproximately 2 billion.

DetailsThe buffer number is not a permanent attribute of the data set; it is valid only for thecurrent operation.

The BUFNO= table option applies to SAS data sets that are opened for input, output,or update.

A larger number of buffers can speed up execution time by limiting the number ofinput and output (I/O) operations that are required for a particular SAS data set.However, the improvement in execution time comes at the expense of increased memoryconsumption.

To reduce I/O operations on a small data set as well as speed execution time, allocateone buffer for each page of data to be processed. This technique is most effective if youread the same observations several times during processing.

BUFSIZE= Table Option

Specifies the size of a permanent buffer page for an output SAS data set.

Valid data sources: SAS data set

Restriction: Use with output data sets only.

SyntaxBUFSIZE= n | nK | nM | nG | hexX | MIN | MAX

Syntax Description

n | nK | nM | nGspecifies the page size in multiples of 1 (bytes); 1,024 (kilobytes); 1,048,576(megabytes); or 1,073,741,824 (gigabytes). For example, a value of 8 specifies a pagesize of 8 bytes, and a value of 4k specifies a page size of 4096 bytes.Requirement: K, M, and G must be uppercased.

hexXspecifies the page size as a hexadecimal value. You must specify the value beginningwith a number (0-9), followed by an X. For example, the value 2dx sets the page sizeto 45 bytes.Requirement: X must be uppercased.

MINsets the minimum number of buffers to 0, which causes SAS to use the minimumoptimal value for the operating environment.

Page 294: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

290 BULKLOAD= Table Option � Chapter 9

MAXsets the page size to the maximum possible number in your operating environment,up to the largest four-byte, signed integer, which is 231-1, or approximately 2 billionbytes.

DetailsThe page size is the amount of data that can be transferred for a single I/O operation toone buffer. The page size is a permanent attribute of the data set and is used when thedata set is processed.

A larger page size can speed up execution time by reducing the number of times SAShas to read from or write to the storage medium. However, the improvement inexecution time comes at the cost of increased memory consumption.

To change the page size, copy the data set and either specify a new page or use theSAS default. To reset the page size to the default value in your operating environment,specify BUFSIZE=0.

Operating Environment Information: The default value for the BUFSIZE= table optionis determined by your operating environment and is set to optimize sequential access.To improve performance for direct (random) access, you should change the value forBUFSIZE=. �

BULKLOAD= Table Option

Loads rows of data as one unit.

Data source support: DB2 UNIX/PC, Oracle

Default value: NO

SyntaxBULKLOAD=YES | NO

Syntax Description

YEScalls a DBMS-specific bulk load facility in order to insert or append rows to a DBMStable.

NOdoes not call the DBMS-specific bulk load facility.

DetailsUsing BULKLOAD=YES is the fastest way to insert rows into a DBMS table.

For DB2 Unix/PC, you can specify additional options. See “BL_LOAD_REPLACE=Table Option” on page 285, “BL_LOG= Table Option” on page 286, and “BL_OPTIONS=

Page 295: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � BULKOPTS= Table Option 291

Table Option” on page 287. These options require the BULKOPTS= container option.For more information, see “BULKOPTS= Table Option” on page 291.

BULKOPTS= Table Option

Container option for BL_LOAD_REPLACE=, BL_LOG=, and BL_OPTIONS= table options.

Data source support: DB2 UNIX/PCCategory: Bulk LoadingRequirement: Must follow BULKLOAD=YES

SyntaxBULKOPTS= (option [, …option)

Syntax Description

BL_LOAD_REPLACE=NO|YESspecifies whether the CLI LOAD interface replaces the existing data in the table. Formore information, see “BL_LOAD_REPLACE= Table Option” on page 285.

BL_LOG=pathnamespecifies a file to which information about the loading process is written. For moreinformation, see “BL_LOG= Table Option” on page 286.

BL_OPTION=optionspecifies a valid DB2 option. For more information, see “BL_OPTIONS= TableOption” on page 287.

DetailsThe BULKOPTS= option is a container option that is required in order to specifyBL_LOAD_REPLACE=, BL_LOG=, and BL_OPTION= table options. To specifyBULKOPTS= option you must first specify BULKLOAD=YES. For more information,see “BULKLOAD= Table Option” on page 290.

Examples

The following example uses BULKLOAD=YES and BULKOPTS= options:

BULKLOAD=YES;BULKOPTS=(BL_LOG=’c:\temp\bulkload.log" BL_LOAD_REPLACE=yes

BL_OPTIONS=’ERRORS=999, LOAD=2000’);

Page 296: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

292 COMPRESS= Table Option � Chapter 9

COMPRESS= Table Option

Specifies how rows are compressed in a new output data set.

Valid data sources: SAS data setCategory: Table ControlRestriction: Use with output tables only.

SyntaxCOMPRESS=NO | YES | CHAR | BINARY

Syntax Description

NOspecifies that the rows in a newly created table are uncompressed (fixed-lengthrecords).

YES | CHARspecifies that the rows in a newly created table are compressed (variable-lengthrecords) by SAS using RLE (Run Length Encoding). RLE compresses rows byreducing repeated consecutive characters (including blanks) to two-byte or three-byterepresentations.

Alias: ONTip: Use this compression algorithm for character data.

BINARYspecifies that the rows in a newly created table are compressed (variable-lengthrecords) by SAS using RDC (Ross Data Compression). RDC combines run-lengthencoding and sliding-window compression to compress the table.Tip: This method is highly effective for compressing medium to large (several

hundred bytes or larger) blocks of binary data (numeric variables). Because thecompression function operates on a single record at a time, the record length needsto be several hundred bytes or larger for effective compression.

DetailsCompressing a table is a process that reduces the number of bytes required to representeach row. Advantages of compressing a table include reduced storage requirements forthe table and fewer I/O operations necessary to read or write to the data duringprocessing. However, more CPU resources are required to read a compressed table(because of the overhead of uncompressing each row), and there are situations wherethe resulting file size might increase rather than decrease.

Use the COMPRESS= table option to compress an individual table. Specify the optionfor an output table only—that is, a table name on the CREATE TABLE statement.

After a table is compressed, the setting is a permanent attribute of the table, whichmeans that to change the setting, you must re-create the table. That is, to uncompressa table, you must drop the table by using the DROP TABLE statement and re-createthe table with the CREATE TABLE statement and the COMPRESS=NO option.

Page 297: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � DBCREATE_TABLE_OPTS= Table Option 293

ComparisonsThe COMPRESS= table option overrides the COMPRESS= connection string option.

When you create a compressed table, you can also specify the REUSE=YES tableoption in order to track and reuse space. With REUSE=YES, new rows are inserted inspace freed when other rows are updated or deleted. When the default REUSE=NO isin effect, new rows are appended to the existing table.

See AlsoTable Options:

“REUSE= Table Option” on page 300

DBCREATE_TABLE_OPTS= Table Option

Specifies DBMS-specific syntax to be added to the CREATE TABLE statement.

Valid data sources: MySQL

Default value: none

SyntaxDBCREATE_TABLE_OPTS= ’DBMS-SQL-clauses’

Syntax Description

DBMS-SQL-clausesspecifies one or more DBMS-specific clauses that can be appended to the end of anSQL CREATE TABLE statement.

DetailsThis option enables you to add DBMS-specific clauses to the end of the CREATETABLE statement. The interface passes the CREATE TABLE statement and its clausesto the DBMS, which executes the statement and creates the DBMS table.

Examples

In the following example, the table TEMP is created with the value of theDBCREATE_TABLE_OPTS= option appended to the CREATE TABLE statement:

create table temp{option dbcreate_table_opts=’partitioning key (x) using hashing’}(x double);

Page 298: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

294 ENCRYPT= Table Option � Chapter 9

The following CREATE TABLE statement is passed to the DBMS in order to createthe table:

create table temp (x double) partitioning key (x) using hashing;

ENCRYPT= Table Option

Specifies whether to encrypt an output SAS data set.

Valid data sources: SAS data setRestriction: Use with output tables only.

SyntaxENCRYPT=YES | NO

Syntax Description

YESencrypts the data set. The encryption method uses passwords. At a minimum, youmust specify the READ= or the PW= table option at the same time that you specifyENCRYPT=YES. Because the encryption method uses passwords, you cannot changeany password on an encrypted file without re-creating the table.

NOdoes not encrypt the data set.

CAUTION:Record all passwords. If you forget the password, you cannot reset it withoutassistance from SAS. The process is time-consuming and resource-intensive. �

Details� Encryption requires approximately the same amount of CPU resources as

compression.� When a SAS data set is encrypted, all associated indexes are also encrypted.

Examples

This example creates an encrypted data set:

create table myfiles.salary {option encrypt=yes read=green}(name char(15),yrsal double,bonuspct double);

insert into myfiles.salary values (’Muriel’, 34567, 3.2);insert into myfiles.salary values (’Bjorn’, 74644, 2.5);insert into myfiles.salary values (’Freda’, 38755, 4.1);

Page 299: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � IDXNAME= Table Option 295

insert into myfiles.salary values (’Benny’, 29855, 3.5);insert into myfiles.salary values (’Agnetha’, 70998, 4.1);

To retrieve data from the data set, you must specify the read password:

select * from myfiles.salary {option read=green};

IDXNAME= Table OptionDirects SAS to use a specific index to match the conditions of a WHERE clause.

Valid data sources: SAS data setRestriction: Use with input data sets onlyRestriction: Mutually exclusive with IDXWHERE= option

SyntaxIDXNAME=index-name

Syntax Description

index-namespecifies the name (up to 32 characters) of a simple or composite index for the SASdata set. SAS does not attempt to determine whether the specified index is the bestone or whether a sequential search might be more resource efficient.Interaction: The specification is not a permanent attribute of the data set and is

valid only for the current use of the data set.

DetailsBy default, to satisfy the conditions of a WHERE clause for an indexed SAS data set,SAS identifies zero or more candidate indexes that could be used to optimize theWHERE clause. From the list of candidate indexes, SAS selects the one that itdetermines will provide the best performance, or rejects all of the indexes if asequential pass of the data is expected to be more efficient.

Because the index SAS selects might not always provide the best optimization, youcan direct SAS to use one of the candidate indexes by specifying the IDXNAME= tableoption. If you specify an index that SAS does not identify as a candidate index, thenIDXNAME= table option does not process the request; that is, IDXNAME= does notallow you to specify an index that would produce incorrect results.

ComparisonsThe IDXWHERE= table option enables you to override the SAS decision about whetherto use an index.

Examples

This example uses the IDXNAME= table option to direct SAS to use a specific indexto optimize the WHERE clause. SAS then disregards the possibility that a sequential

Page 300: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

296 IDXWHERE= Table Option � Chapter 9

search of the data set might be more resource efficient and does not attempt todetermine whether the specified index is the best one. (Note that the EMPNUM indexwas not created with the NOMISS option.)

create table mydata.empnewas select * from mydata.employee {option idxname=empnum}where empnum < 2000;

See AlsoTable options:

“IDXWHERE= Table Option” on page 296

IDXWHERE= Table Option

Specifies whether SAS uses an index search or a sequential search to match the conditions of aWHERE clause.

Data source support: SAS data set

Restriction: Use with input data sets only

Restriction: Mutually exclusive with IDXNAME= option

SyntaxIDXWHERE=YES|NO

Syntax Description

YEStells SAS to choose the best index to optimize a WHERE clause, and to disregard thepossibility that a sequential search of the data set might be more resource-efficient.

NOtells SAS to ignore all indexes and satisfy the conditions of a WHERE clause with asequential search of the data set.

Note: You cannot use the IDXWHERE= table option to override the use of anindex to process a BY statement. �

DetailsBy default, to satisfy the conditions of a WHERE clause for an indexed SAS data set,SAS decides whether to use an index or to read the data set sequentially. The softwareestimates the relative efficiency and chooses the method that is more efficient.

You might need to override the software’s decision by specifying the IDXWHERE=table option because the decision is based on general rules that occasionally might not

Page 301: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � LABEL= Table Option 297

produce the best results. That is, by specifying the IDXWHERE=table option, you areable to determine the processing method.

Note: The specification is not a permanent attribute of the data set and is valid onlyfor the current use of the data set. �

ComparisonsThe IDXNAME= table option enables you to direct SAS to use a specific index.

Examples

Example 1: Specifying Index Usage This example uses the IDXWHERE= table optionto tell SAS to decide which index is the best to optimize the WHERE clause. SAS thendisregards the possibility that a sequential search of the data set might be moreresource-efficient:

create table mydata.empnewas select * from mydata.employee {option idxwhere=yes}where empnum < 2000;

Example 2: Specifying No Index Usage This examples uses the IDXWHERE= tableoption to tell SAS to ignore any index and to satisfy the conditions of the WHEREclause with a sequential search of the data set:

create table mydata.empnewas select * from mydata.employee {option idxwhere=no}where empnum < 2000;

See AlsoTable options:“IDXNAME= Table Option” on page 295

LABEL= Table Option

Specifies a label for a SAS table.

Valid data sources: SAS data set

SyntaxLABEL=’label ’

Page 302: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

298 LOCKTABLE= Table Option � Chapter 9

Syntax Description

’label ’specifies a text string of up to 256 characters. If the text contains single quotationmarks, use double quotation marks around the label, or use two single quotationmarks in the label text and surround the string with single quotation marks. Toremove a label from a data set, assign a label that is equal to a blank that is enclosedin quotation marks.

Details

You can use the LABEL= table option on both input and output tables. When you usethe LABEL= table option on input tables, it assigns a label for the file for the durationof the operation. When this is specified for an output table, the label becomes apermanent part of that file.

A label assigned to a table remains associated with that table when you update atable in place, such as when you use the APPEND procedure or the MODIFYstatement. However, a label is lost if you use a table with a previously assigned label tocreate a new table with the CREATE TABLE statement. For example, a labelpreviously assigned to table ONE is lost when you create the new output table ONE inthis CREATE TABLE statement:

create table one as select * from one;

Examples

These examples assign labels to SAS data sets:

create table w2 {option label=’1976 W2 Info, Hourly’};

create table new {option label=’Peter’’s List’};

create table new {option label="Hillside’s Daily Account"};

create table sales {option label=’Sales For May(NE)’};

LOCKTABLE= Table Option

Places shared or exclusive locks on tables.

Valid data sources: SAS data set

Syntax

LOCKTABLE=SHARE | EXCLUSIVE

Page 303: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � PW= Table Option 299

Syntax Description

SHARElocks a table in shared mode, allowing other users or processes to read data from thetables, but preventing users from updating data.

EXCLUSIVElocks a table exclusively, preventing other users from accessing any table that youopen.

DetailsYou can lock tables only if you are the owner or have been granted the necessaryprivilege.

If you access the BASE tabledriver through PROC TSSQL, the default value for theLOCKTABLE option is EXCLUSIVE. However, if you access the BASE tabledriverthrough a table server, or if you run your program locally with the SAS Table ServerLIBNAME engine, the default value for the LOCKTABLE option is SHARE.

PW= Table Option

Assigns a READ, WRITE, and ALTER password to a SAS data set, and enables access to apassword-protected file.

Valid data sources: SAS data set

SyntaxPW=password

Syntax Description

passwordmust be a valid SAS name.

DetailsThe PW= table option applies only to a SAS data set. You can use this option to

assign a password or to access a password-protected file. When a data set that isprotected by a password is replaced, the new data set inherits the password.

When the code is written to the SAS log the password is blotted out, for example:

from a(pw=XXXXXXX);

Note: A SAS password does not control access to a SAS file beyond the SAS system.You should use the operating system-supplied utilities and file-system security controlsin order to control access to SAS files outside of SAS. �

Page 304: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

300 READ= Table Option � Chapter 9

READ= Table Option

Assigns a READ password to a SAS data set that prevents users from reading the file, unless theyenter the password.

Valid data sources: SAS data set

SyntaxREAD=read-password

Syntax Description

read-passwordmust be a valid SAS name.

DetailsThe READ= option applies only to a SAS data set. You can use this option to assign apassword or to access a read-protected file. When the code is written to the SAS log, thepassword is blotted out, for example:

from a(read=XXXXXXX);

Note: A SAS password does not control access to a SAS file beyond the SAS system.You should use the operating system-supplied utilities and file-system security controlsin order to control access to SAS files outside of SAS. �

REUSE= Table Option

Specifies whether new rows can be written to freed space in a compressed SAS data set.

Valid data sources: SAS data setRestriction: Use with output data sets only

SyntaxREUSE=NO|YES

Syntax Description

NO

Page 305: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � TYPE= Table Option 301

does not track and reuse space in a compressed SAS data set. New rows areappended to the existing data set. Specifying NO results in less efficient data storageif you delete or update many rows in the data set.

YEStracks and reuses space in a compressed SAS data set. New rows are inserted in thespace that is freed when other rows are updated or deleted.

If you plan to use operations that add rows to the end of a compressed data set,use REUSE=NO. REUSE=YES causes new rows to be added wherever there is spacein the file, not necessarily at the end of the file.

DetailsBy default, new rows are appended to an existing compressed data set. If you want totrack and reuse free space by deleting or updating other rows, use the REUSE= tableoption when you create a compressed SAS data set.

The REUSE= table option has meaning only when you are creating a new data setwith the COMPRESS=YES option. Using the REUSE= table option when you areaccessing an existing SAS data set has no effect.

See AlsoTable Options:“COMPRESS= Table Option” on page 292

TYPE= Table Option

Specifies the data set type for a specially structured SAS data set.

Valid data sources: SAS data set

SyntaxTYPE=data-set-type

Syntax Description

data-set-typespecifies the special type of the data set.

DetailsUse the TYPE= table option to create a special data set in the proper format or toidentify the special type of the data set.

Most data sets do not have a specified type. However, there are several speciallystructured data sets that are used by some SAS/STAT procedures. These SAS data setscontain special columns and rows, and they are usually created by SAS statisticalprocedures. Because most of the special data sets are used with SAS/STAT software,they are described in the SAS/STAT User’s Guide.

Page 306: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

302 TYPE= Table Option � Chapter 9

Other values are available in other SAS software products and are described in theappropriate documentation.

Page 307: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL Statement Table Options � WRITE= Table Option 303

WRITE= Table Option

Assigns a WRITE password to a SAS data set that prevents users from writing to the file or thatenables access to a write-protected file.

Valid data sources: SAS data set

SyntaxWRITE=write-password

Syntax Description

write-passwordmust be a valid SAS name.

DetailsThe WRITE= table option applies only to a SAS data set. You can use this option toassign a password or to access a write-protected file. When the code is written to theSAS log, the password is blotted out, for example:

from a(write=XXXXXXX);

Note: A SAS password does not control access to a SAS file beyond the SAS system.You should use the operating system-supplied utilities and file-system security controlsin order to control access to SAS files outside of SAS. �

Page 308: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

304

Page 309: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

305

P A R T3

Appendixes

Appendix 1. . . . . . . . .TSSQL and the ANSI Standard 307

Appendix 2. . . . . . . . .Tables Used in Examples 311

Appendix 3. . . . . . . . .DICTIONARY Table Descriptions 315

Appendix 4. . . . . . . . .ICU License 329

Appendix 5. . . . . . . . .Recommended Reading 331

Page 310: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

306

Page 311: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

307

A P P E N D I X

1TSSQL and the ANSI Standard

Compliance 307TSSQL Enhancements 307

Reserved Words 307

Column Modifiers 308

Functions 308

Aggregate Functions 308Base SAS DATA Step Functions 308

PROC FCMP Functions 308

Table Options 308

SAS Missing Values and NULL Values 308

Security Coupling Key for SAS and SPD Data Sets 308

Identity Columns for SPDD Data Sets 309TSPL Package Expressions as Functions 309

Integrity Constraints 309

Collection of Statistical Data 309

TSSQL DICTIONARY Tables 309

TSSQL Limitations 310Granting User Privileges 310

SAS and SPD Data Set Identifiers and Naming Conventions 310

ComplianceTSSQL is core compliant with the current ANSI Standard for SQL.*

TSSQL Enhancements

Reserved WordsFor a complete list of reserved words in TSSQL, see “TSSQL Reserved Words” on

page 28.

* International Organization for Standardization (ISO): Database SQL. Document ISO/IEC 9075–1:1999. Also available asAmerican National Standards Institute (ANSI) Document ANSI 9075–1:1999.

Page 312: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

308 Column Modifiers � Appendix 1

Column ModifiersTSSQL supports the FORMAT=, INFORMAT=, and LABEL= modifiers for

expressions within the SELECT clause. These modifiers control the format in whichoutput data are displayed and labeled. For more information, see “Using Formats inTSSQL” on page 36, “How to Specify Informats in TSSQL” on page 223, and “HAVINGClause” on page 270.

Functions

Aggregate FunctionsTSSQL supports many more aggregate functions that required by the ANSI Standard

for SQL. For a complete list of aggregate functions that TSSQL supports, see“Aggregate Functions” on page 135.

Base SAS DATA Step FunctionsTSSQL supports many of the functions that are available to the Base SAS DATA

step. Some of the functions that aren’t supported are the variable information functionsand functions that work with arrays of data. Other TSSQL data sources support theirown sets of functions.

For a complete list of functions that TSSQL supports, see “Overview of TSSQLFunctions” on page 132.

PROC FCMP FunctionsTSSQL supports user-written functions, except those functions with array elements,

only when TSSQL statements are submitted with PROC TSSQL. For more informationabout using PROC TSSQL, see SAS Language Interfaces to Table Server.

Table OptionsA table option specifies actions that enable you to perform operations on a table such

as assigning or specifying passwords. A table option in the SAS Table Server performsmuch of the same functionality as a Base SAS data set option. For more information,see “Overview of Statement Table Options” on page 283.

SAS Missing Values and NULL ValuesTSSQL supports both SAS missing values and null values. Nonexistent data is

represented by a SAS missing value in SAS data sets and the SPDC file format in SPDdata sets (SPDC file formats). For all other data sources, nonexistent data isrepresented by an ANSI SQL null value. For more information, see “How TSSQLProcesses Nulls and SAS Missing Values” on page 12.

Security Coupling Key for SAS and SPD Data SetsThe security coupling key for SAS and SPD data sets controls access to data sets at

the schema level. When SAS or SPD data sets are bound to a specific schema, the data

Page 313: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

TSSQL and the ANSI Standard � TSSQL DICTIONARY Tables 309

set cannot be accessed by any other means except through a SAS Table Serverconnection to that schema. For more information, see the “ALTER TABLE Statement”on page 226.

Identity Columns for SPDD Data SetsFor the SPDD file format, you can create an identity column, which stores a unique,

system-generated integer. An identity column provides an application with asequential, ascending identifier, used for locating a row. For more information, see“Identity Column for SPD Data Sets” in the SAS Table Server Administrator’s Guideand the “CREATE TABLE Statement” on page 236.

TSPL Package Expressions as FunctionsYou can invoke a TSPL package expression as a function in a TSSQL SELECT

statement. For more information, see “Using TSPL Package Expressions” on page 134.

Integrity ConstraintsIntegrity constraints are a set of data validation rules that you can specify to

preserve the validity and consistency of your data. Integrity constraints that arespecified in the CREATE TABLE statement are passed through to the data source.When a transaction modifies the table, the data source enforces integrity constraints.For more information, see the “CREATE TABLE Statement” on page 236.

Collection of Statistical DataTSSQL supports the ANALYZE statement for SPD data sets with the SPDD file

format. The ANALYZE statement analyzes the data content of either every table in thedatabase, a specified table in the database, or a specific column in order to generatestatistics that represent the distribution of values. Subsequently, the data distributionstatistics are used by the TSSQL processor in order to optimize the performance ofqueries, such as joins. For more information, see the “ANALYZE Statement” on page232.

TSSQL DICTIONARY TablesTSSQL supports DICTIONARY tables that are similar to the DICTIONARY tables

that are available in Base SAS. A SAS Table Server DICTIONARY table is a read-onlytable that contains information about columns, tables, and catalogs, and statistics abouta single table and its associated indexes. For more information, see “DICTIONARYTables” on page 27.

Page 314: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

310 TSSQL Limitations � Appendix 1

TSSQL Limitations

Granting User PrivilegesThe GRANT statement, PRIVILEGES keyword, and authorization-identifier features

of SQL are not supported. You might want to use operating environment-specific meansof security instead.

SAS and SPD Data Set Identifiers and Naming ConventionsTable, column, and index names for SAS and SPD data sets are limited to 32

characters. For more information, see “Identifiers” on page 11.

Page 315: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

311

A P P E N D I X

2Tables Used in Examples

DENSITIES 311WORLDTEMPS 311

WORLDCITYCOORDS 312

AFEWWORDS 313

CUSTONLINE 313

DENSITIES

Table A2.1 Densities

Name Population SquareMiles Density

Afghanistan 17,070,323 251825 67.79

Albania 3,407,400 11100 306.97

Algeria 28,171,132 919595 30.63

Andorra 64,634 200 323.17

Angola 9,901,050 481300 20.57

Antigua and Bar 65,644 171 383.88

Argentina 34,248,705 1073518 31.90

Armenia 3,556,864 11500 309.29

Australia 18,255,944 2966200 6.15

Austria 8,033,746 32400 247.96

WORLDTEMPSTable A2.2 Worldtemps

City Country AvgHigh AvgLow

Algiers Algeria 90 45

Amsterdam Netherlands 70 33

Beijing China 86 17

Page 316: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

312 WORLDCITYCOORDS � Appendix 2

City Country AvgHigh AvgLow

Bombay India 90 68

Calcutta India 97 56

Caracas Venezuela 83 57

Geneva Switzerland 76 28

Hong Kong China 89 51

Lagos Nigeria 90 75

Madrid Spain 89 36

Shanghai China 33

Zurich Switzerland 78 25

WORLDCITYCOORDSTable A2.3 Worldcitycoords

City Country Latitude Longitude

Algiers Algeria 37 3

Shanghai China 31 121

Hong Kong Hong Kong 22 114

Bombay India 19 73

Calcutta India 22 88

Amsterdam Netherlands 52 5

Lagos Nigeria 6 3

Madrid Spain 40 .

Zurich Switzerland 47 8

Caracas Venezuel 10 –67

China 40 116

Page 317: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

Tables Used in Examples � CUSTONLINE 313

AFEWWORDSThe column Word was created with a data type of varchar(10).

Table A2.4 Afewwords

Word1 Word2

*some/ WHERE

*every* THING

*no* BODY

CUSTONLINETable A2.5 Custonline

CustomerNumber

BeginTime EndTime

US-C-37533944 01SEP2007:10:00:00.000 01SEP2007:10:05:01.253

GB-W-33944332 02OCT2007:22:15:33.000 02OCT2007:22:21:09.421

SP-M-29443992 15OCT2007:18:44:25.000 15OCT2007:19:04:55.746

US-A-37144324 01NOV2007:12:03:59.000 01NOV2007:12:25:09.398

FR-P-98384488 01DEC2007:12:15:34.000 01DEC2007:12:47:45.221

GB-L-24995559 02JAN2008:15:43:24.000 02JAN2008:16:06:15.766

FR-L-42339887 16JAN2008:14:55:00.000 16JAN2008:15:05:56.288

GB-P-87559899 01FEB2008:11:02:44.000 01FEB2008:11:15:33.955

SP-N-44333958 01MAR2008:10:14:33.000 01MAR2008:10:35:27.908

GB-R-24994990 15MAR2008:09:00:06.000 15MAR2008:09:06:20.475

Page 318: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

314

Page 319: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

315

A P P E N D I X

3DICTIONARY Table Descriptions

DICTIONARY.CATALOGS 315DICTIONARY.COLUMNS 315

DICTIONARY.COLUMN_STATISTICS 320

DICTIONARY.STATISTICS 321

DICTIONARY.TABLES 326

DICTIONARY.CATALOGSThe following table lists the columns that appear in the result table for the

DICTIONARY.CATALOGS table.

Column Name ColumnNumber

Data Type Description

CATALOG 1 NVARCHAR Catalog name

DRIVER 2 NVARCHAR Data source name

DESCRIPTION 3 NVARCHAR Description of catalog

DICTIONARY.COLUMNSThe following table lists the columns that appear in the result table for the

DICTIONARY.COLUMNS table.

Note: NULL indicates either a NULL or a missing value.

Page 320: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

316 DICTIONARY.COLUMNS � Appendix 3

Column name Columnnumber

Data type Description

TABLE_CAT 1 NVARCHAR* Catalog name

TABLE_SCHEM 2 NVARCHAR Schema name

NULL is returned if the schema is notapplicable to the data source. If a driversupports schemas for some tables but notfor others, such as when the driverretrieves data from different DBMSs, itreturns an empty string (" ") for thosetables that do not have schemas.

TABLE_NAME 3 NVARCHAR* Table name

COLUMN_NAME 4 NVARCHAR* Column name

The driver returns an empty string for acolumn that does not have a name.

DATA_TYPE 5 signedINTEGER*

TKTS data type.

This can be a SAS Table Server-defineddata type or a remote table driver-specificdata type. For datetime and interval datatypes, this column returns the concisedata type such as DATE orINTERVAL_YEAR_TO_MONTH, ratherthan the nonconcise data type such asDATETIME or INTERVAL. Forinformation about driver-specific TKTSdata types, see the remote table driver’sdocumentation.

TYPE_NAME 6 NVARCHAR* Data source-dependent common data typename, for example, CHAR, NVARCHAR,or BIGINT.

COLUMN_SIZE 7 signedBIGINT*

If DATA_TYPE is CHAR or VARCHAR,this column contains the maximum lengthof the column in characters. For datetimedata types, this is the total number ofcharacters required to display the valuewhen it is converted to characters. Fornumeric data types, this is either the totalnumber of digits or the total number ofbits allowed in the column, according tothe NUM_PREC_RADIX column. Forinterval data types, this is the number ofcharacters in the character representationof the interval literal.

Page 321: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

DICTIONARY Table Descriptions � DICTIONARY.COLUMNS 317

Column name Columnnumber

Data type Description

BUFFER_LENGTH 8 signedBIGINT*

The length in bytes of data transferred.For numeric data, this size might bedifferent than the size of the data storedon the data source. This value might bedifferent than COLUMN_SIZE column forcharacter data.

DECIMAL_DIGITS 9 signedINTEGER

The total number of significant digits tothe right of the decimal point.

If DATA_TYPE is TIME andTIMESTAMP, this column contains thenumber of digits in the fractional secondscomponent. For the other data types, thisis the decimal digits of the column on thedata source. For interval data types thatcontain a time component, this columncontains the number of digits to the rightof the decimal point (fractional seconds).For interval data types that do not containa time component, this column is 0. NULLis returned for data types whereDECIMAL_DIGITS is not applicable.

NUM_PREC_RADIX 10 signedINTEGER

For numeric data types, either 10 or 2 isreturned.

If the value returned is 10, the values inCOLUMN_SIZE and DECIMAL_DIGITScontain the number of decimal digitsallowed for the column. For example, aDECIMAL(12,5) column would return 10for NUM_PREC_RADIX, 12 forCOLUMN_SIZE, and 5 forDECIMAL_DIGITS; a FLOAT columncould return 10 for NUM_PREC_RADIX,15 for C OLUMN_SIZE, and NULL forDECIMAL_DIGITS.

If the value returned is 2, the va lues inCOLUMN_SIZE and DECIMAL_DIGITSgive the number of bits allowed in thecolumn. For example, a FLOAT columncould return 2 for RADIX, 53 forCOLUMN_SIZE, and NULL forDECIMAL_DIGITS.

NULL is returned for data types whereNUM_PREC_RADIX is not applicable.

Page 322: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

318 DICTIONARY.COLUMNS � Appendix 3

Column name Columnnumber

Data type Description

NULLABLE 11 signedINTEGER notNULL

TKTS_NO_NULLS if the column will notaccept NULL values.

TKTS _NULLABLE if the column acceptsNULL values.

TKTS_NULLABLE_UNKNOWN if it isnot known whether the column acceptsNULL values.

The value returned for this column isdifferent from the value returned for theIS_NULLABLE column. The NULLABLEcolumn indicates with certainty that acolumn can accept NULL values, butcannot indicate with certainty that acolumn does not accept NULL values. TheIS_NULLABLE column indicates withcertainty that a column cannot acceptNULL values, but cannot indicate withcertainty that a column accepts NULLvalues.

REMARKS 12 NVARCHAR A description of the column. For a TSSQLview, the value in the REMARKS columnis TSSQL.VIEW.

COLUMN_DEF 13 NVARCHAR The default value of the column.

The value in this column should beinterpreted as a string if it is enclosed inquotation marks.

If NULL was specified as the defaultvalue, then this column is the word NULL,not enclosed in quotation marks. If thedefault value cannot be representedwithout truncation, then this columncontains TRUNCATED, not enclosed inquotation marks. If no default value isspecified, then this column is NULL.

The value of COLUMN_DEF can be usedin generating a new column definition,except when it contains the valueTRUNCATED.

Page 323: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

DICTIONARY Table Descriptions � DICTIONARY.COLUMNS 319

Column name Columnnumber

Data type Description

TKTS_DATA_TYPE 14 signedINTEGER*

Data type, as it appears in theTKTS_DESC_TYPE record field.

This can be a SAS Table Server-defineddata type or a remote table driver-specificdata type. This column is the same as theDATA_TYPE column, with the exception ofdatetime and interval data types. Thiscolumn returns the nonconcise data type(such as DATETIME or INTERVAL),rather than the concise data type (such asDATE or YEAR_TO_MONTH) for datetimeand interval data types. If this columnreturns DATETIME or INTERVAL, thespecific data type can be determined fromthe TKTS_DATETIME_SUB column. Forinformation about driver-specific TKTSdata types, see the remote table driver’sdocumentation.

TKTS_DATETIME_SUB 15 signedINTEGER

The subtype code for datetime andinterval data types.

For other data types, this column returnsa NULL.

CHAR_OCTET_LENGTH 16 signed BIGINT The maximum length in bytes of acharacter or binary data type column.

For all other data types, this columnreturns a NULL.

ORDINAL_POSITION 17 signedINTEGER*

The ordinal position of the column in thetable.

The first column in the table is number 1.

IS_NULLABLE 18 NVARCHAR* NO if the column does not include NULLs.

YES if the column could include NULLs.

This column returns a zero-length string ifnullability is unknown.

ISO rules are followed to determinenullability. An ISO SQL–compliant DBMScannot return an empty string.

The value returned for this column isdifferent from the value returned for theNULLABLE column.

* Value cannot be a NULL.

Page 324: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

320 DICTIONARY.COLUMN_STATISTICS � Appendix 3

DICTIONARY.COLUMN_STATISTICSThe following table lists the columns that appear in the result table for the

DICTIONARY.COLUMN_STATISTICS table.

Note: NULL indicates either a NULL or a missing value. �

Note: The first four columns do not appear in the result table.�

Column name Columnnumber

Data type Description

TABLE_CAT 1 NVARCHAR* Catalog name

TABLE_SCHEM 2 NVARCHAR Schema name

NULL is returned if the schema is notapplicable to the data source. If a driversupports schemas for some tables but notfor others, such as when the driverretrieves data from different DBMSs, itreturns an empty string (" ") for thosetables that do not have schemas.

TABLE_NAME 3 NVARCHAR* Table name

COLUMN_NAME 4 NVARCHAR* Column name

The driver returns an empty string for acolumn that does not have a name.

TYPE 5 unsignedINTEGER*

Type of information being returned:

TKTS_COL_STAT indicates a statistic forthe columns specified in theCARDINALITY and HISTOGRAMcolumns.

CARDINALITY 6 unsignedINTEGER

Cardinality of column or column set intable.

This is the number of distinct, non-NULLvalues in the column or column set. NULLis returned if the value is not availablefrom the data source.

NULL_FRAC 7 DOUBLE Fraction (expressed as a decimal) of thecolumn’s entries that are NULL. If any ofthe columns in a set of columns is NULLthen that entry is considered NULL.

MOST_COMMON_VALS 8 NVARCHAR Contains a value which is common for thiscolumn.

NULL if there are no common values.

NULL if the number of columns is greaterthan one.

Page 325: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

DICTIONARY Table Descriptions � DICTIONARY.STATISTICS 321

Column name Columnnumber

Data type Description

MOST_COMMON_FREQS 9 DOUBLE A frequency of the common value returnedin MOST_COMMON_VALS.

This would likely be the number ofoccurrences of that particular columnvalue divided by the total number of rowsin the table.

NULL if the number of columns is greaterthan one.

HISTOGRAM_ENTRY 10 unsignedINTEGER

The entry for the HISTOGRAM_BOUNDSvalue.

NULL if the number of columns is greaterthan one.

HISTOGRAM_BOUNDS 11 NVARCHAR One entry in a list of values that dividethe column’s values into groups ofapproximately equal population.

The most common values (returned byMOST_COMMON_VALS )are omittedfrom the histogram calculation. NoHISTOGRAM_BOUNDS are returned ifthe column’s data type does not have a lessthan (< )operator, or if the values returnedby MOST_COMMON_VALS account forthe entire population of the column.

NULL if the number of columns is greaterthan one.

CORRELATION 12 DOUBLE Statistical correlation between thephysical row ordering and the logicalordering of the column values.

The values range from -1 to +1. This valueis not returned if the column’s data typedoes not have a less than (< )operator.

NULL if the number of columns is greaterthan one.

* Value cannot be a NULL or missing value

DICTIONARY.STATISTICSThe following table lists the columns that appear in the result table for the

DICTIONARY.STATISTICS table.

Note: NULL indicates either a NULL or a missing value.

Page 326: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

322 DICTIONARY.STATISTICS � Appendix 3

Column Name ColumnNumber

Data Type Description

TABLE_CAT 1 NVARCHAR* TKTS catalog name.

TABLE_SCHEM 2 NVARCHAR Schema name of the table to which thestatistic or index applies.

NULL if not applicable to the data source.If a driver supports schemas for sometables but not for others, such as when thedriver retrieves data from differentDBMSs, it returns an empty string (" ") forthose tables that do not have schemas.

TABLE_NAME 3 NVARCHARnot NULL

Name of the table to which the statistic orindex applies.

NON_UNIQUE 4 signedINTEGER

Indicates whether the index prohibitsduplicate values:

TKTS_TRUE if the index values can benon-unique.

TKTS_FALSE if the index values must beunique.

NULL is returned if TYPE isTKTS_TABLE_STAT.

INDEX_QUALIFIER 5 NVARCHAR The identifier that is used to qualify theindex name doing a DROP INDEX.

NULL is returned if an index qualifier isnot supported by the data source or ifTYPE is TKTS_TABLE_STAT. If anon-null value is returned in this column,it must be used to qualify the index nameon a DROP INDEX statement; otherwise,the TABLE_SCHEM should be used toqualify the index name.

INDEX_NAME 6 NVARCHAR Index name.

NULL is returned if TYPE isTKTS_TABLE_STAT.

Page 327: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

DICTIONARY Table Descriptions � DICTIONARY.STATISTICS 323

Column Name ColumnNumber

Data Type Description

TYPE 7 signedINTEGER*

Type of information being returned:

TKTS_TABLE_STAT indicates a statisticfor the table in the CARDINALITY orPAGES column.

TKTS_INDEX_BTREE indicates a B-Treeindex.

TKTS_INDEX_CLUSTERED indicates aclustered index.

TKTS_INDEX_CONTENT indicates acontent index.

TKTS_INDEX_HASHED indicates ahashed index.

TKTS_INDEX_OTHER indicates anothertype of index.

ORDINAL_POSITION 8 signedINTEGER

Column sequence number in indexstarting with 1.

NULL is returned if TYPE isTKTS_TABLE_STAT.

COLUMN_NAME 9 NVARCHAR Column name.

If the column is based on an expression,such as SALARY + BENEFITS, theexpression is returned; if the expressioncannot be determined, an empty string isreturned. NULL is returned if TYPE isTKTS_TABLE_STAT.

ASC_OR_DESC 10 CHAR(1) Sort sequence for the column: A forascending; D for descending.

NULL is returned if column sort sequenceis not supported by the data source or ifTYPE is TKTS_TABLE_STAT.

CARDINALITY 11 signed BIGINT Cardinality of table or index

Number of rows in table if TYPE isTKTS_TABLE_STAT.

Number of unique values in the index ifTYPE is not TKTS_TABLE_STAT

.NULL if the value is not available fromthe data source.

PAGES 12 signedINTEGER

Number of pages used to store the indexor table.

Number of pages for the table if TYPE isTKTS_TABLE_STAT.

Number of pages for the index if TYPE isnot TKTS_TABLE_STAT.

NULL if the value is not available fromthe data source or if not applicable to thedata source.

Page 328: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

324 DICTIONARY.STATISTICS � Appendix 3

Column Name ColumnNumber

Data Type Description

FILTER_CONDITION 13 NVARCHAR If the index is a filtered index, this is thefilter condition, such as SALARY > 30000.

If the filter condition cannot bedetermined, the value is an empty string.

NULL if the index is not a filtered index,if it cannot be determined whether theindex is a filtered index, or if TYPE isTKTS_TABLE_STAT.

AVG_FANOUT** 14 DOUBLE The average fan-out of internal nodes foran index. Valid for TKTS_INDEX_* TYPErecords.

NULL if not known or available.

MAX_FANOUT** 15 unsignedINTEGER

The maximum fan-out of internal nodesfor an index. Valid for TKTS_INDEX_*TYPE records.

NULL if not known or available.

MIN_FANOUT** 16 unsignedINTEGER

The minimum fan-out of internal nodes foran index. Valid for TKTS_INDEX_* TYPErecords.

NULL if not known or available.

INDEX_LEVELS** 17 unsignedINTEGER

The number of levels in an index. Valid forTKTS_INDEX_* TYPE records.

NULL if not known or available.

LEAF_LEVEL_BLOCKS** 18 unsignedINTEGER

The number of blocks at the leaf level ofan index. Valid for TKTS_INDEX_* TYPErecords.

NULL if not known or available.

LOCAL** 19 NVARCHAR Whether a table is local or must beaccessed over a network. Valid forTKTS_TABLE_STAT TYPE records.

Values YES, NO or NULL if unknown.

PARTITION_SCHEME** 20 unsignedINTEGER

Whether the table is partitioned and, if so,does it use a round-robin, hash- orrange-partitioning scheme. Valid forTKTS_TABLE_STAT TYPE records.

TKTS_PARTITION_NONE indicates thetable is not partitioned.TKTS_PARTITION_ROUND_ROBINindicates a round-robin partitioningscheme. TKTS_PARTITION_HASHindicates a hash partitioning scheme.TKTS_PARTITION_RANGE indicates arange partitioning scheme. NULL if notknown or available.

Page 329: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

DICTIONARY Table Descriptions � DICTIONARY.STATISTICS 325

Column Name ColumnNumber

Data Type Description

FRAGMENTATION** 21 unsignedINTEGER

If the data is distributed, indicateswhether it uses vertical fragmentation,horizontal fragmentation, derivedfragmentation, or a hybrid fragmentation.Valid for TKTS_TABLE_STAT TYPErecords.

TKTS_FRAG_NONE indicates the data isnot distributed. TKTS_FRAG_VERTICALindicates vertical fragmentation.TKTS_FRAG_HORIZONTAL indicateshorizontal fragmentation.TKTS_FRAG_DERIVED indicates derivedfragmentation. TKTS_FRAG_HYBRIDuses hybrid fragmentation. NULL if notknown or available.

LABEL** 22 NVARCHAR(max 256characters)

Label associated with the table. Valid forTKTS_TABLE_STAT TYPE records.

NULL if not known or available.

APPLICATION_TYPE** 23 NVARCHAR(max 8characters)

SAS application–specific type associatedwith the table. The value of this type fieldis created, stored, and retrieved by someSAS applications. The meaning of thevalue is specific to the application thatcreated it. Valid for TKTS_TABLE_STATTYPE records.

NULL if not known or available.

PROTECTED** 24 signedINTEGER

Indicates whether table is passwordprotected. Valid for TKTS_TABLE_STATTYPE records.

TKTS_PROTECTION_NONE indicatestable is not password protected.

TKTS_PROTECTION_READ indicatestable is read protected.

TKTS_PROTECTION_WRITE indicatestable is write protected.

TKTS_PROTECTION_ALTER indicatestable is alter protected.

TKTS_PROTECTION_ENCRYPTEDindicates table is encrypted.

NULL if not known or available.

Page 330: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

326 DICTIONARY.TABLES � Appendix 3

Column Name ColumnNumber

Data Type Description

COMPRESS** 25 NVARCHAR(max 8characters)

Indicates whether the records in the tableare compressed. Valid forTKTS_TABLE_STAT TYPE records.

NO Indicates records are uncompressed.

YES|CHAR indicates RLE(Run LengthEncoding) used to compress records.

BINARY indicates RDC(Ross DataCompression) used to compress records.

NULL if not known or available.

CHAR_CEI** 26 unsignedINTEGER

Encoding value used for the table. Validfor TKTS_TABLE_STAT TYPE records.

NULL if not known or available.

DELETED_ROWS** 27 signed BIGINT Number of deleted rows in the table. Validfor TKTS_TABLE_STAT TYPE records.

NULL if not known or available.

DATE_CREATED** 28 DOUBLE Date the table was created. Value is aSAS defined DATETIME. Valid forTKTS_TABLE_STAT TYPE records.

NULL if not known or available.

DATE_MODIFIED** 29 DOUBLE Date the table was last modified. Value isa SAS defined DATETIME. Valid forTKTS_TABLE_STAT TYPE records.

NULL if not known or available.

TABLE_ATTRIBUTES** 30 signedINTEGER

Attributes that apply to the table. Thiscolumn represents a set of flags to conveyspecific attributes. A value of 0 for anyflag indicates either a False or unknowncondition.

Valid for TKTS_TABLE_STAT TYPErecords.

NULL if not known or available.

ROW_LENGTH** 31 signed BIGINT Length of the rows in the table on disk.Valid for TKTS_TABLE_STAT TYPErecords.

NULL if not known or available.

* Value cannot be a NULL or missing value** Optional–not defined in ODBC

DICTIONARY.TABLES

The following table lists the columns that appear in the result table for theDICTIONARY.TABLES table.

Page 331: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

DICTIONARY Table Descriptions � DICTIONARY.TABLES 327

Note: NULL indicates either a NULL or a missing value.�

Column name Columnnumber

Data type Description

TABLE_CAT 1 NVARCHARnot NULL

Catalog name

TABLE_SCHEM 2 NVARCHAR Schema name; NULL if not applicable tothe data source. If a driver supportsschemas for some tables but not for others,such as when the driver retrieves datafrom different DBMSs, it returns anempty string (" ") for those tables that donot have schemas.

TABLE_NAME 3 NVARCHARnot NULL

Table name

TABLE_TYPE 4 NVARCHARnot NULL

Table type name; one of the following:TABLE, VIEW, SYSTEM TABLE,GLOBAL TEMPORARY, LOCALTEMPORARY, ALIAS, SYNONYM, or adata source–specific type name.

The meanings of ALIAS and SYNONYMare driver-specific.

REMARKS 5 NVARCHAR A description of the table

NATIVE_CAT 6 NVARCHAR The native data store’s Catalog; NULL ifnot applicable to the data source. If adriver supports catalogs for some tablesbut not for others, such as when the driverretrieves data from different DBMSs, itreturns an empty string (" ") for thosetables that do not have catalogs.

Page 332: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

328

Page 333: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

329

A P P E N D I X

4ICU License

ICU License - ICU 1.8.1 and later 329

ICU License - ICU 1.8.1 and later

COPYRIGHT AND PERMISSION NOTICECopyright (c) 1995-2005 International Business Machines Corporation and others All

rights reserved.Permission is hereby granted, free of charge, to any person obtaining a copy of this

software and associated documentation files (the "Software"), to deal in the Softwarewithout restriction, including without limitation the rights to use, copy, modify, merge,publish, distribute, and/or sell copies of the Software, and to permit persons to whomthe Software is furnished to do so, provided that the above copyright notice(s) and thispermission notice appear in all copies of the Software and that both the above copyrightnotice(s) and this permission notice appear in supporting documentation.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIESOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE ANDNONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THECOPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLEFOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA ORPROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHERTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not be usedin advertising or otherwise to promote the sale, use or other dealings in this Softwarewithout prior written authorization of the copyright holder.

——————————————————————————–All trademarks and registered trademarks mentioned herein are the property of their

respective owners.

Page 334: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

330

Page 335: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

331

A P P E N D I X

5Recommended Reading

Recommended Reading 331

Recommended ReadingHere is the recommended reading list for this title:� SAS Table Server: TSPL Language Reference

� SAS Table Server Administrator’s Guide� SAS Language Interfaces to Table Server� SAS Language Reference: Dictionary

� SAS National Language Support (NLS): Reference Guide

For a complete list of SAS publications, go to support.sas.com/bookstore. If youhave questions about which titles you need, please contact a SAS Publishing SalesRepresentative at:

SAS Publishing SalesSAS Campus DriveCary, NC 27513Telephone: 1-800-727-3228Fax: 1-919-531-9439E-mail: [email protected] address: support.sas.com/bookstore

Customers outside the United States and Canada, please contact your local SAS officefor assistance.

Page 336: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

332

Page 337: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

333

Index

AABS function 136ACOS function 137aggregate functions 132, 135

ANSI Standard for SQL and 308calling Base SAS functions instead of 135syntax 133

ALTER= table option 285ALTER TABLE statement 227ANALYZE statement 232ANSI Standard for SQL 307arithmetic expressions

type conversion for 18ASIN function 138ATAN function 139ATAN2 function 140AVG function 141

B$BASE64Xw. format 40BEGIN statement 233BESTDw.p format 51BESTw. format 50BETWEEN predicate 202$BINARYw. format 41BINARYw. format 52BL_LOAD_REPLACE= table option 286BL_LOG= table option 286BL_OPTIONS= table option 287BUFNO= table option 288BUFSIZE table option 289BULKLOAD= table option 290BULKOPTS= table option 291

CCASE expression 203CEILING function 142$CHARw. format 42, 49COALESCE expression 206collection of statistical data

ANSI Standard for SQL and 309column modifiers 308columns

identity columns for SPDD data sets 309COMMAw.d format 53COMMAXw.d format 54

COMMIT statement 234COMPRESS= table option 292concatenation expressions

type conversion for 19constants

date, time, and datetime 22correlated subqueries 21COS function 143COSH function 144COT function 145COUNT function 146CREATE INDEX statement 235CREATE VIEW statement 249CSS function 147CURRENT_DATE function 149CURRENT_TIME function 150CURRENT_TIME_GMT function 150CURRENT_TIMESTAMP function 151CURRENT_TIMESTAMP_GMT function 152

Ddata sets

ANSI Standard for SQL and 308date, time, and datetime formats for 25dates and times in SAS and SPD data sets 23identifiers 310identity columns for SPDD data sets 309naming conventions 310

data types 10type conversion 16

DATEAMPMw.d format 57dates and times 22

date, time, and datetime constants 22date, time, and datetime formats 25date, time, and datetime functions 24in SAS and SPD data sets 23overview 22SPDC file format 23, 25

datetimesSee dates and times

DATETIMEw.d format 59DATEw. format 56DAY function 153DAYw. format 61DBCREATE_TABLE_OPTS= table option 293DDMMYYw. format 61DDMMYYxw. format 63DEGREES function 154

Page 338: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

334 Index

DELETE statement 251DICTIONARY tables 27

ANSI Standard for SQL and 309DICTIONARY.CATALOGS 315DICTIONARY.COLUMNS 315DICTIONARY.COLUMN_STATISTICS 320DICTIONARY.STATISTICS 321DICTIONARY.TABLES 326

DISTINCT predicate 207DOLLARw.d format 65DOLLARXw.d format 66DOWNAMEw. format 67DROP INDEX statement 252DROP TABLE statement 253DROP VIEW statement 254DTDATEw. format 68DTMONYYw. format 69DTWKDATXw. format 70DTYEARw. format 72DTYYQCw. format 73Dw.p format 55

EE function 155ENCRYPT= table option 294EUROw.d format 74EUROXw.d format 76Ew. format 74EXCEPT operator 277EXISTS predicate 208EXP function 156expressions 20, 201, 217

arithmetic 18complex 218concatenation 19correlated subqueries 21dictionary of 202functions in 219logical 18order of evaluation 219query expressions 20relational 19simple 218subqueries 20, 219TSPL package expressions 134, 309type conversion 16unary 18value expressions 21

FFCMP procedure functions 308FLOATw.d format 77FLOOR function 157formats 35

categories of 37date, time, and datetime 25dictionary of 40documented elsewhere 38examples 37outputting formatted data 36specifying, changing, and deleting 36syntax 35user-defined 36validation of 37

FRACTw. format 78functions 132

aggregate 132, 135ANSI Standard for SQL and 308calling Base SAS functions instead of TSSQL aggregate

functions 135categories of 136date, time, and datetime 24dictionary of 136FCMP procedure functions 308in expressions 219restrictions on arguments 134set functions 132syntax 133, 134TSPL package expressions as 134, 309

$Fw. format 49

H$HEXw. format 43HEXw. format 79HHMMw.d format 80HOUR function 158HOURw.d format 81

Iidentity columns

for SPDD data sets 309IDXNAME= table option 295IDXWHERE= table option 296IEEEw.d format 82IFNULL function 159IN predicate 209informats 221

examples 224specifying 223syntax 221TSSQL support of 222validation of 223

INSERT statement 255integrity constraints

ANSI Standard for SQL and 309INTERSECT operator 278IS FALSE predicate 210IS MISSING predicate 211IS NULL predicate 212IS TRUE predicate 212IS UNKNOWN predicate 213

JJULIANw. format 84

KKURTOSIS function 160

LLABEL= table option 297LIKE predicate 214LOCALTIME function 162LOCALTIMESTAMP function 162LOCKTABLE= table option 298

Page 339: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

Index 335

LOG function 163LOG10 function 164LOG2 function 165logical expressions

type conversion for 18LOWER function 166

MMAX function 167MIN function 168MINUTE function 169missing values

ANSI Standard for SQL and 308MMDDYYw. format 85MMDDYYxw. format 86MMSSw.d format 88MMYYw. format 89MMYYxw. format 90MOD function 170MONNAMEw. format 92MONTH function 172MONTHw. format 92MONYYw. format 93

Nnaming conventions

SAS and SPD data sets 310NEGPARENw.d format 95NENGOw. format 96NMISS function 173null values

ANSI Standard for SQL and 308NULLIF expression 216numeric value expressions 21

O$OCTALw. format 44OCTALw. format 97OCTET_LENGTH function 174operators 218

order of evaluation 219order of evaluation 219output

formatted data 36

PPERCENTNw.d format 99PERCENTw.d format 98PI function 175POWER function 175predicates 201

dictionary of 202order of evaluation 219

PROBT function 176PUT function 178

outputting formatted data 36PW= table option 299

QQTRRw. format 101

QTRw. format 100queries 20

correlated subqueries 21subqueries 20, 219

query expressions 20$QUOTEw. format 45

RRADIANS function 179RANGE function 180READ= table option 300relational expressions

type conversion for 19reserved words 28REUSE= table option 300$REVERJw. format 46$REVERSw. format 47ROLLBACK statement 257ROMANw. format 101row value constructors 21row value expressions 21

SSAS data sets

ANSI Standard for SQL and 308date, time, and datetime formats for 25dates and times in 23identifiers 310naming conventions 310

scalar subqueries 20SECOND function 181security coupling key

ANSI Standard for SQL and 308SELECT statement 259set functions 132SIGN function 182SIN function 183SINH function 183SIZEKMGw.d format 103SIZEKw.d format 102SKEWNESS function 184SPD data sets

ANSI Standard for SQL and 308date, time, and datetime formats for 25dates and times in 23identifiers 310naming conventions 310

SPDC file format 23, 25SPDD data sets

identity columns for 309sql-expression 217SQRT function 186statement table options

See table optionsstatements 225

dictionary of 226statistical data collection

ANSI Standard for SQL and 309STDDEV function 186STDERR function 187STUDENTS_T function 189subqueries 20

correlated 21in expressions 219

Page 340: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

336 Index

scalar 20SUBSTRING function 190SUM function 191syntax conventions 5

Ttable options 283

ANSI Standard for SQL and 308dictionary of 285interactions with other options 284restrictions 284syntax 284

Table Server SQL (TSSQL) 10limitations and ANSI Standard for SQL 310

TAN function 192TANH function 193TIMEAMPMw.d format 106times

See dates and timesTIMEw.d format 104TODw.d format 107TRIM function 194TSPL package expressions

as functions 134, 309TSSQL Pass-Through Facility 28type conversion 16

arithmetic expressions 18concatenation expressions 19definitions 16logical expressions 18overview 17relational expressions 19unary expressions 18

TYPE= table option 301typographical conventions 5

Uunary expressions

type conversion for 18UNION operator 276$UPCASEw. format 48UPDATE statement 280

UPPER function 195

user-defined formats 36

user privileges 310

USS function 196

Vvalidation of formats 37

validation of informats 223

value expressions 21

numeric 21

row value 21

VARIANCE function 198

VAXRBw.d format 108

W$w. format 49

w.d format 109

WEEKDATEw. format 110

WEEKDATXw. format 111

WEEKDAYw. format 113

WRITE= table option 303

YYEAR function 199

YEARw. format 113

YENw.d format 114

YYMMDDw. format 118

YYMMDDxw. format 120

YYMMw. format 115

YYMMxw. format 117

YYMONw. format 121

YYQRw. format 125

YYQRxw. format 127

YYQw. format 122

YYQxw. format 124

YYQZw. format 128

ZZw.d format 129

Page 341: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

Your Turn

We welcome your feedback.� If you have comments about this book, please send them to [email protected].

Include the full title and page numbers (if applicable).� If you have comments about the software, please send them to [email protected].

Page 342: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL
Page 343: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL

SAS® Publishing Delivers!Whether you are new to the work force or an experienced professional, you need to distinguish yourself in this rapidly changing and competitive job market. SAS® Publishing provides you with a wide range of resources to help you set yourself apart. Visit us online at support.sas.com/bookstore.

SAS® Press Need to learn the basics? Struggling with a programming problem? You’ll find the expert answers that you need in example-rich books from SAS Press. Written by experienced SAS professionals from around the world, SAS Press books deliver real-world insights on a broad range of topics for all skill levels.

s u p p o r t . s a s . c o m / s a s p r e s sSAS® Documentation To successfully implement applications using SAS software, companies in every industry and on every continent all turn to the one source for accurate, timely, and reliable information: SAS documentation. We currently produce the following types of reference documentation to improve your work experience:

• Onlinehelpthatisbuiltintothesoftware.• Tutorialsthatareintegratedintotheproduct.• ReferencedocumentationdeliveredinHTMLandPDF– free on the Web. • Hard-copybooks.

s u p p o r t . s a s . c o m / p u b l i s h i n gSAS® Publishing News Subscribe to SAS Publishing News to receive up-to-date information about all new SAS titles, author podcasts, and new Web site features via e-mail. Complete instructions on how to subscribe, as well as access to past issues, are available at our Web site.

s u p p o r t . s a s . c o m / s p n

SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. Otherbrandandproductnamesaretrademarksoftheirrespectivecompanies.©2009SASInstituteInc.Allrightsreserved.518177US.0109

Page 344: TSSQL Language Reference - SASftp.sas.com/techsup/download/blind/TableServer/tssqlref.pdfPART2 TSSQL Language Reference 7 Chapter 3 TSSQL Language Concepts 9 Introduction to the TSSQL