Upload
trungt2k6
View
217
Download
0
Embed Size (px)
Citation preview
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 1/77
T-SQL for Data
Manipulation
Vu Tuyet [email protected]
Hanoi University of Technology
1
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 2/77
Microsoft
Microsoft
Overview of Transact-SQL
Based on AINSI SQL 92 standard
Composing of three categories
Data Manipulation Language (DML) Data Definition Language (DDL)
Data Control Language (DCL)
Having some Microsoft specific extensions
Beyond relational data
.net framework integration
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 3/77
Microsoft
Microsoft
Outline
Selecting Data from Existing Tables
Inserting Data
Updating Data Deleting Data
Fulltext Serach
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 4/77
Microsoft
Microsoft
Select Data
The simple syntax to select the itemsfrom the exit table is:
select <the items >
from <name of table>
where <conditions>
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 5/77
Microsoft
Microsoft
Select Data
You can change the name of the items in the table:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 6/77
Microsoft
Microsoft
Select Data
You can insert some items as following:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 7/77
MicrosoftMicrosoft
Select
Example a function µcount¶ to count the columns of the
table:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 8/77
MicrosoftMicrosoft
Select Data
You can use some functions or some operations in the
Select Statement:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 9/77
MicrosoftMicrosoft
Select Data
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 10/77
MicrosoftMicrosoft
Select Data
Maths
Functions
Functions
String
Functions
The Time
functions
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 11/77
MicrosoftMicrosoft
- ASCII()
- CHAR()
- UPPER()
- LOWER()
- LEN()- LTRIM()
- RTRIM()
- LEFT()
- RIGHT()
- AVG()
- MIN()
- MAX()
- SUM()- COUNT()
- SQUARE()
- SQRT()
- ROUND()
- GETDATE()
-
DATEPART(YY,g
etdate())
-DATEDIFF(X,Y,Z)
-
DAY(),MONTH(),
YEAR()
Select Data
Maths String Time
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 12/77
MicrosoftMicrosoft
Select Data
Besides, there are some functions to convert the data
type:
- CAST() - CONVERT()
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 13/77
MicrosoftMicrosoft
Select
Select
Order by«.ect«
Join..on
Cross join
Group by
Oder by
Compute
For
Into
Having
With
Except ,
Intersect
Union
Option
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 14/77
MicrosoftMicrosoft
Select-With statement
Specifies a temporary named result set, known as a common
table expression (CTE).
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 15/77
MicrosoftMicrosoft
Select-Order by
- You can arrange the result follow the first letter by using the
order by statement:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 16/77
MicrosoftMicrosoft
Select-multiple tables
You can select the items from more than a table as
following:
With ³outer join´:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 17/77
MicrosoftMicrosoft
Select ± multiple tables
Inner join:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 18/77
MicrosoftMicrosoft
Select-multiple tables
- When you select from more than 1 table, you can use the
join«on statement or you can use the cross join statement.
With the cross join statement, you don¶t have to have torelative condition between the tables and the result is all the
Objects:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 19/77
MicrosoftMicrosoft
Select-multiple tables
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 20/77
MicrosoftMicrosoft
Select-multiple tables
- You can select from many tables, and create a new table to
store that result:
Now, you can refresh the sql folder, and you can see the newtable named newtbl as the following:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 21/77
MicrosoftMicrosoft
Select-multiple tables
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 22/77
MicrosoftMicrosoft
Select-merge
A new feature in SQL2008 is merge statement. You can merge 2 or
more tables:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 23/77
MicrosoftMicrosoft
Select-Group by
Specifies the groups into which output rows are to be placed. If aggregate
functions are included in the SELECT clause <select list>, GROUP BY
calculates a summary value for each group.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 24/77
MicrosoftMicrosoft
Select-Having
Specifies a search condition for a group or an aggregate
HAVING is typically used in a GROUP BY clause. When
GROUP BY
is not used, HAVING behaves like aW
HEREclause.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 25/77
MicrosoftMicrosoft
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 26/77
MicrosoftMicrosoft
Select-intersect
INTERSECT returns any distinct values that are returned by both the query
on the left and right sides of the INTERSECT operand.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 27/77
MicrosoftMicrosoft
Select-except
EXCEPT returns any distinct values from the left query that
are not also found on the right query.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 28/77
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 29/77
MicrosoftMicrosoft
Select-Compute by
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 30/77
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 31/77
MicrosoftMicrosoft
Select-For clause
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 32/77
MicrosoftMicrosoft
Insert
The simple syntax for Insert statement is:INSERT INTO<table(x,y,«)>
VALUES(a,b,«)
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 33/77
MicrosoftMicrosoft
Insert
- You can insert some values into the table, and you have to
insert all the value not null, and the primary key:
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 34/77
MicrosoftMicrosoft
Insert
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 35/77
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 36/77
MicrosoftMicrosoft
Insert
- You can create a new table and insert the values into that table
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 37/77
MicrosoftMicrosoft
Insert
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 38/77
MicrosoftMicrosoft
Insert
- Inserting data into a unique identifier column by using
NEWID()
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 39/77
MicrosoftMicrosoft
Insert
- Inserting data into a table through a view
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 40/77
MicrosoftMicrosoft
Insert
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 41/77
MicrosoftMicrosoft
Delete
The simple syntax:
delete from<table>
- Delete with the condition where
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 42/77
MicrosoftMicrosoft
Delete
- Using DELETE on the current row of a cursor
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 43/77
MicrosoftMicrosoft
Delete
- Using DELETE based on a subquery and using the Transact-
SQL extension
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 44/77
MicrosoftMicrosoft
Delete
- Using DELETE with the TOP clause
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 45/77
MicrosoftMicrosoft
Delete
Using DELETE with the OUTPUT clause
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 46/77
MicrosoftMicrosoft
Update
The simple syntax for Update statement is:
UPDATE <table>
SET <items to update>
WHERE <conditions>
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 47/77
MicrosoftMicrosoft
Update
- Using UPDATE with the FROM Clause
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 48/77
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 49/77
MicrosoftMicrosoft
Update
- Before :
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 50/77
MicrosoftMicrosoft
Update
After
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 51/77
MicrosoftMicrosoft
Fulltext Search
Full-Text Search Architecture
Administering Full-Text Search
Querying SQL Server Using Full-Text Search
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 52/77
MicrosoftMicrosoft
Overview
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 53/77
MicrosoftMicrosoft
Overview
The architecture consists of the following processes:
SQL Server process (Sqlservr.exe)
Microsoft Full-Text Engine for SQL Server process (Msftesql.exe)
Microsoft Full-Text Engine Filter Daemon process (Msftefd.exe)
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 54/77
MicrosoftMicrosoft
Full-Text Search Terminology
Full-text index
Stores information about significant words and their location within a given column. This information is used toquickly compute full-text queries that search for rows with particular words or combinations of words.
Full-text catalog
A full-text catalog contains zero or more full-text indexes. Full-text catalogs must reside on a local hard driveassociated with the instance of SQL Server. Each catalog can serve the indexing needs of one or more tables
within a database. Full-text catalogs cannot be stored on removable drives, floppy disks, or network drives, exceptwhen you attached a read-only database that contains a full-text catalog.
Word breaker
For a given language, a word breaker tokenizes text based on the lexical rules of the language.
Token
Is a word or a character string identified by the word breaker.
Stemmer
For a given language, a stemmer generates inflectional forms of a particular word based on the rules of that
language. Stemmers are language specific. Filter Given a specified file type, for example .doc, filters extract text from a file stored in a varbinary(max) or
image column.
Population or Crawl Is the process of creating and maintaining a full-text index.
Noise words Are frequently occurring words that do not help the search. For example , for the English localewords such as "a", "and", "is", and "the" are considered noise words. These words are ignored to prevent the full-text index from becoming bloated.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 55/77
MicrosoftMicrosoft
Administering Full-Text Search
The system stored procedures that are used to implement and query
full-text indexes.
sp_fulltext_catalog
sp_help_fulltext_catalogs_cursor sp_fulltext_column
sp_help_fulltext_columns
sp_fulltext_database
sp_help_fulltext_columns_cursor
sp_fulltext_service
sp_help_fulltext_tablessp_fulltext_table
sp_help_fulltext_tables_cursor
sp_help_fulltext_catalogs
DENY permission [ ,...n ] ON FULLTEXT CATALOG :: full-
t ex t_catal og _name TO d atabase _ princ ipal [ ,...n ] [ CASCADE ] [ AS
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 56/77
MicrosoftMicrosoft
Administering Full-Text Search
Full-text administration can be separated into three main
tasks:
Creating/altering/dropping full-text catalogs
Creating/altering/dropping full-text indexes
Scheduling and maintaining index population.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 57/77
MicrosoftMicrosoft
Administering Full-Text Search
Full-text indexes Regular SQL Server indexesStored in the file system, but
administered through the database.
Stored under the control of the database
in which they are defined.
Only one full-text index allowed per
table.
Several regular indexes allowed per
table.
Addition of data to full-text indexes,
called population, can be requested
through either a schedule or a specific
request, or can occur automatically withthe addition of new data.
Updated automatically when the data
upon which they are based is inserted,
updated, or deleted.
Grouped within the same database into
one or more full-text catalogs.Not grouped.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 58/77
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 59/77
MicrosoftMicrosoft
Guidelines in administering full-text indexes (2)
Always select the smallest unique index available for your full-text unique key. (A 4-
byte, integer-based index is optimal.) This reduces the resources required by
Microsoft Search service in the file system significantly. If the primary key is large
(over 100 bytes), consider choosing another unique index in the table (or creating
another unique index) as the full-text unique key. Otherwise, if the full-text unique key
size exceeds the maximum size allowed (900 bytes), full-text population will not beable to proceed.
If you are indexing a table that has millions of rows, assign the table to its own full-
text catalog.
Consider the amount of change occurring in the tables being full-text indexed, as wellas the number of table rows. If the total number of rows being changed, together with
the numbers of rows in the table present during the last full-text population,
represents millions of rows, assign the table to its own full-text catalog.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 60/77
MicrosoftMicrosoft
Guidelines in administering full-text indexes (3)
After the word breaker-routine has a list of valid words for a row within a column, the
full-text engine calculates tokens to represent the words. A token is simply a
compressed form of the original word that saves space and ensures that full-textindexes can be created in as compact a form as possible.
The full text-text functionality then builds all tokens in a column into inverted, stacked,
compressed structure within a file that is used for search operations. This uniquestructure allows ranking and scoring algorithms to efficiently satisfy possible queries.
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 61/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
Full-Text query keywords
FREETEXT
FREETEXTTABLE
CONTAINS
CONTAINSTABLE
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 62/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
FREETEXT
FREETEXT ( { c olumn _name | (c olumn _l ist ) | * } , 'f reet ex t_st ring ' [ ,
LANGUAGE lang uage _t erm ] )
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE [Description] LIKE N'%bike%';
SELECT ProductDescriptionID, Description FROM Production.ProductionDescription
WHERE FREETEXT(Description, N¶bike¶); --Must be UNICODE. Otherwise prevents a
query optimizer from parameter sniffing
SELECT ProductDescriptionID, Description FROM Production.ProductionDescription
WHERE CONTAINS(Description, N¶bike¶);
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 63/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 64/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
FREETEXTTABLE
FREETEXTTABLE (tabl e , { c olumn _name | (c olumn _l ist ) | * } , 'f reet ex t_st ring '
[ ,LANGUAGE lang uage _t erm ] [ ,t op _n _by _r ank ] )
The FREETEXTTABLE version of the previous FREETEXT query would look
like this:
SELECT PD.ProductDescriptionID, PD.Description, KEYTBL.[KEY],
KEYTBL.RANK FROM Production.ProductDescription AS PD
INNER JOIN FREETEXTTABLE()Production.ProductDescription, Description,
N¶bike¶)
AS KEYTBL ON PD.ProductDescriptionID = KEYTBL.[KEY]
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 65/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
CONTAINS
CONTAINS ( { c olumn _name | (c olumn _l ist ) | * } , '< contains_search_condition
>' [ , LANGUAGE lang uage _t erm ] ) < contains_search_condition > ::= { <
simple_term > | < prefix_term > | < generation_term > | < proximity_term > |
< weighted_term > } | { ( < contains_search_condition > ) [ { < AND > | < ANDNOT > | < OR > } ] < contains_search_condition > [ ...n ] } < simple_term >
::= wor d | " phr ase " < prefix term > ::= { "wor d * " | " phr ase *" } <
generation_term > ::= FORMSOF ( { INFLECTIONAL | THESAURUS } , <
simple_term > [ ,...n ] ) < proximity_term > ::= { < simple_term > | < prefix_term >
} { { NEAR | ~ }
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N'bike');
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N'''bike*'''):
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 66/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N' FORMSOF (INFLECTIONAL, bike) ');
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N' FORMSOF (THESAURUS, bike) ');
Word proximity is a common way of searching documents for multiple keywords or phrases. This typeof query uses the NEAR(~) keyword. The closer words are to each other , the better the match for
these types of queries. The proximity is used as a part of RANK calculation for rows matching the
search criteria. This keyword is rarely used with the CONTAINS predicate because the rank of
matched results cannot be evaluated directly.
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N'mountain NEAR bike');
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N'mountain ~ bike');
SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, 'ISABOUT (mountain weight(.8), bike weight (.2) )');
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 67/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
The CONTAINSTABLE function has the same capabilities as the CONTAINS function.
However , like the FREETEXTABLE function, it returns a rowset that contains a RANK
and a KEY column that can be used to return the best matches to a search.
CONTAINSTABLE ( tabl e , { c olumn _name | (c olumn _l ist ) | * } , ' <contains_search_condition > ' [ , LANGUAGE lang uage _t erm] [ ,t op _n _by _r ank ] ) <
contains_search_condition > ::= { < simple_term > | < prefix_term > | <
generation_term > | < proximity_term > | < weighted_term > } | { ( <
contains_search_condition > ) { { AND | & } | { AND NOT | &! } | { OR | | } } <
contains_search_condition > [ ...n ] } < simple_term > ::= wor d | " phr ase " <
prefix term > ::= { "wor d * " | " phr ase *" } < generation_term > ::= FORMSOF (
{ INFLECTIONAL | THESAURUS } , < simple_term > [ ,...n ] ) < proximity_term >::= { < simple_term > | < prefix_term > } { { NEAR | ~ } { < simple_term > | <
prefix_term > } } [ ...n ] < weighted_term > ::= ISABOUT ( { { < simple_term
> | < prefix_term > | < generation_term > | < proximity_term > } [ WEIGHT (
weight_value ) ] } [ ,...n ] )
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 68/77
MicrosoftMicrosoft
Querying SQL Server Using Full-Text Search
Full-text search much more powerful than LIKE
Used correctly, will produce more specific, relevant results
Better performance ± LIKE queries are designed for small amounts of
text data, full-text search scales to huge documents
Provides ranking of results
Common uses
Search through the content in a text-intensive, database driven website,
e.g. a knowledge base
Search the contents of documents stored in BLOB fields
Perform advanced searches
e.g. with exact phrases - "to be or not to be" (however needs care!)
e.g. Boolean operators - AND, OR, NOT, NEAR
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 69/77
MicrosoftMicrosoft
Writing FTS terms
The power of FTS is in the expression which is passed
to the CONTAINS or CONTAINSTABLE function
Several different types of terms:
Simple terms
Prefix terms
Generation terms
Proximity terms
Weighted terms
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 70/77
MicrosoftMicrosoft
Simple terms
Either words or phrases
Quotes are optional, but recommended
Matches columns which contain the exact words or phrases
specified Case insensitive
Punctuation is ignored
e.g.
CONTAINS(Column, 'SQL')
CONTAINS(Column, ' "SQL" ')
CONTAINS(Column, 'Microsoft SQL Server')
CONTAINS(Column, ' "Microsoft SQL Server" ')
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 71/77
MicrosoftMicrosoft
Prefix terms
Matches words beginning with the specified text
e.g.
CONTAINS(Column, ' "local*" ')
matches local, locally, locality
CONTAINS(Column, ' "local wine*" ')
matches "local winery", "locally wined"
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 72/77
MicrosoftMicrosoft
Generation terms
Two types:
Inflectional
FORMSOF(INFLECTIONAL, "expression")
Thesaurus
FORMSOF(THESAURUS, "expression")
Both return variants of the specified word, but variants
are determined differently
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 73/77
MicrosoftMicrosoft
Inflectional
Matches plurals and words which share the
same stem
When vague words such as "best" are used, doesn't match the exact word, only "good"
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 74/77
MicrosoftMicrosoft
Thesaurus
Supposed to match synonyms of search terms ± but the
thesaurus seems to be very limited
Does not match plurals
Not particularly useful
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 75/77
MicrosoftMicrosoft
Proximity terms
SyntaxCONTAINS(Column, 'local NEAR winery')
CONTAINS(Column, ' "local" NEAR "winery" ')
Matches words which are NEAR each other Terms on either side of NEAR must be either simple or
proximity terms
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 76/77
MicrosoftMicrosoft
Weighted terms
Each word can be given a rank
Can be combined with simple, prefix, generation and
proximity terms
e.g. CONTAINS(Column, 'ISABOUT(
performance weight(.8),
comfortable weight(.4)
)')
CONTAINS(Column, 'ISABOUT(
FORMSOF(INFLECTIONAL, "performance") weight (.8),
FORMSOF(INFLECTIONAL, "comfortable") weight (.4)
)')
8/7/2019 Session3_TSQL_DML
http://slidepdf.com/reader/full/session3tsqldml 77/77