• TSFQL 0.1 讨论稿


    T-SFQL 0

    T-SFQL 0.1

     

    Copy right 1

    概述... 1

    保留关键字... 2

    T-SQL继承的关键字... 2

    新增关键字... 3

    基本T-SFQL 语句... 3

    Insert 语句... 3

    Syntax. 4

    Arguments. 4

    Examples. 5

    Select 语句... 5

    Syntax. 5

    Arguments. 6

    Examples. 7

    Update 语句... 7

    Syntax. 8

    Examples. 8

    Delete 语句... 8

    Syntax. 8

    Examples. 9

     

     

     

    Copy right

    Hubble.net

     

     

    概述

     

    T-SFQL (Transact-Structured Full-text Query Language) 是在T-SQL 标准基础上衍生出来的结构化全文查询语言。2009年由Hubble.net 提出,语言全文数据库的查询和管理。

    T-SFQL 0.1 版本为T-SFQL 语言推出的第一个版本。该版本只提供基本的“增删改查”功能。其他功能将逐渐在后续版本中提供。

     

    保留关键字

     

    T-SQL继承的关键字

     

    ADD    EXIT    PRIMARY

    ALL     FETCH            PRINT

    ALTER            FILE    PRIVILEGES

    AND    FILLFACTOR             PROC

    ANY    FLOPPY         PROCEDURE

    AS       FOR    PROCESSEXIT

    ASC    FOREIGN       PUBLIC

    AUTHORIZATION    FREETEXT     RAISERROR

    AVG    FREETEXTTABLE     READ

    BACKUP        FROM             READTEXT

    BEGIN            FULL   RECONFIGURE

    BETWEEN      GOTO             REFERENCES

    BREAK           GRANT           REPEATABLE

    BROWSE        GROUP           REPLICATION

    BULK HAVING         RESTORE

    BY       HOLDLOCK RESTRICT

    CASCADE      IDENTITY      RETURN

    CASE IDENTITY_INSERT   REVOKE

    CHECK           IDENTITYCOL          RIGHT

    CHECKPOINT           IF         ROLLBACK

    CLOSE            IN        ROWCOUNT

    CLUSTERED INDEX            ROWGUIDCOL

    COALESCE    INNER            RULE

    COLUMN       INSERT           SAVE

    COMMIT        INTERSECT   SCHEMA

    COMMITTED             INTO   SELECT

    COMPUTE     IS         SERIALIZABLE

    CONFIRM      ISOLATION   SESSION_USER

    CONSTRAINT           JOIN   SET

    CONTAINS    KEY    SETUSER

    CONTAINSTABLE    KILL   SHUTDOWN

    CONTINUE    LEFT   SOME

    CONTROLROW        LEVEL            STATISTICS

    CONVERT      LIKE   SUM

    COUNT          LINENO         SYSTEM_USER

    CREATE         LOAD             TABLE

    CROSS           MAX   TAPE

    CURRENT      MIN    TEMP

    CURRENT_DATE      MIRROREXIT            TEMPORARY

    CURRENT_TIME       NATIONAL    TEXTSIZE

    CURRENT_TIMESTAMP      NOCHECK     THEN

    CURRENT_USER      NONCLUSTERED     TO

    CURSOR        NOT    TOP

    DATABASE    NULL TRAN

    DBCC             NULLIF          TRANSACTION

    DEALLOCATE           OF       TRIGGER

    DECLARE       OFF     TRUNCATE

    DEFAULT       OFFSETS        TSEQUAL

    DELETE          ON      UNCOMMITTED

    DENY             ONCE             UNION

    DESC ONLY             UNIQUE

    DISK   OPEN UPDATE

    DISTINCT      OPENDATASOURCE            UPDATETEXT

    DISTRIBUTED           OPENQUERY            USE

    DOUBLE         OPENROWSET          USER

    DROP OPTION         VALUES

    DUMMY         OR       VARYING

    DUMP             ORDER           VIEW

    ELSE   OUTER           WAITFOR

    END    OVER WHEN

    ERRLVL          PERCENT       WHERE

    ERROREXIT   PERM WHILE

    ESCAPE          PERMANENT            WITH

    EXCEPT          PIPE    WORK

    EXEC PLAN WRITETEXT

    EXECUTE       PRECISION     

    EXISTS           PREPARE      

     

    新增关键字

     

    DOCID 该关键字用于表示文档ID

    SCORE:该关键字用于表示查询结果的得分。

    MATCH:该关键字类似LIKE 用于全文的模糊匹配。

     

     

    基本T-SFQL 语句

    Insert 语句

    T-SFQL Insert 语句的语法和T-SQL 基本一致,0.1 版本省略了table hint limited 部分。

    Syntax

    INSERT [INTO]
        {
         table_name)
        }

        {    [(column_list)]
            { VALUES ( {    DEFAULT
                            |    NULL
                            |    expression
                            
    }[,...n]
                )
            }
        }
        | DEFAULT VALUES

    Arguments

    [INTO]

    Is an optional keyword that can be used between INSERT and the target table.

    table_name

    Is the name of a table that is to receive the data.

     (column_list)

    Is a list of one or more columns in which to insert data. column_list must be enclosed in parentheses and delimited by commas.

    If a column is not in column_list, Microsoft® SQL Server™ must be able to provide a value based on the definition of the column; otherwise, the row cannot be loaded. SQL Server automatically provides a value for the column if the column:

    ·         Has an IDENTITY property. The next incremental identity value is used.

    ·         Has a default. The default value for the column is used.

    ·         Has a timestamp data type. The current timestamp value is used.

    ·         Is nullable. A null value is used.

    column_list and VALUES list must be used when inserting explicit values into an identity column, and the SET IDENTITY_INSERT option must be ON for the table.

    VALUES

    Introduces the list of data values to be inserted. There must be one data value for each column in column_list (if specified) or in the table. The values list must be enclosed in parentheses.

    If the values in the VALUES list are not in the same order as the columns in the table or do not have a value for each column in the table, column_list must be used to explicitly specify the column that stores each incoming value.

    DEFAULT

    Forces SQL Server to load the default value defined for a column. If a default does not exist for the column and the column allows NULLs, NULL is inserted. For a column defined with the timestamp data type, the next timestamp value is inserted. DEFAULT is not valid for an identity column.

    expression

    Is a constant, a variable, or an expression. The expression cannot contain a SELECT or EXECUTE statement.

     

    DEFAULT VALUES

    Forces the new row to contain the default values defined for each column.

     

    Examples

     

    INSERT T1 VALUES (1, 'Row #1')

     

    INSERT INTO T1 (column_1,column_2) VALUES (-99,'Explicit identity value')

    Select 语句

    T-SFQL 0.1 版本的Select语句是 T-SQLSelect语句的子集,只提供单表的查询功能。不提供 Group by , Having 语句,不提供 Sum,Avg 等统计函数,不提供Distinct, Union等语法。Where 子句中增加了全文搜索的语法元素。分页的查询功能在Hubble.net 库中提供,不在SQL中提供,因此取消Top功能。Order by 语句只限定为单字段排序。

     

    Syntax

    SELECT [ ALL]
            <select_list>

        [ FROM {<table_source>} [,...n] ]    n =1

        [ WHERE <search_condition> ]       

        [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }
            [,...n]    ] n=1

    Arguments

    ALL

          列出被查询表中所有的列,通常用 * 表示 ALL

     

    select_list

           列出指定的列

     

    FROM

          指定查询的源。

    table_source

           表名,0.1 版本只提供单表查询,这里只能写一个表名。

     

    WHERE

     

    Where 子句和T-SQL的查询字句一致,0.1 版本不提供Where子句中使用函数等内容,只提供最简化的布尔表达式。为适应全文搜索的需要, T-SFQL 语句在T-SQL标准基础上做了增加,下面重点描述增加的部分:

    • 指定字段权重

    T-SFQL 语句只允许对全文索引字段指定权重,对其它字段指定权值无效。

    语法:

    FieldName^Boost

    ^ 为分隔符,表示设置权重开始

    Boost为权重,无符号整型,范围为 0-65535

     

     

    例:

    Select * from T where c1^5 match ‘BeiJing

     

    • 位置无关模糊匹配

    位置无关模糊匹配指被匹配的关键字无论其位置关系如何,得到的记录得分都相同。

    比如 匹配 China BeiJing BeiJing China 得到的结果是相同的。

     

    语法:

    FieldName Match ‘Query words[^Boost]’

     

    Query words:要查询的单词,可以为多个单词,单词之间以空格分隔。

     

    ^ 分隔符,表示设置权重开始。

    Boost:权重,无符号整型,范围为 0-65535。可选项,不指定权重则默认权重为1

     

     

    例:

    Select * from T where  C2 Match ‘China^256 BeiJing^100 ShangHai

     

     

    • 位置相关模糊匹配

    位置无关模糊匹配指被匹配的关键字随其位置关系不同会得到不同的记录得分。

    比如 匹配 China BeiJing BeiJing China 得到的结果是不同。前者会将全文中存在China BeiJing 这个顺序的文章得分提高,而将BeiJing China 这个顺序的文章得分降低。

     

    T-SFQL 借用了SQL 中的Like 关键字来表示位置相关的模糊匹配。

     

    语法:

    FieldName Like ‘Query words[^Boost][^Position]’

     

    Query words:要查询的单词,可以为多个单词,单词之间以空格分隔。

     

    ^ 分隔符,表示设置权重或者位置开始。

    Boost:权重,无符号整型,范围为 0-65535。可选项,不指定权重则默认权重为1

    Position: 单词的起始位置,无符号整型,可选项,必须在权重之后出现。如果不指定,则默认为单词出现在查询字符串中的位置。

    例:

    Select * from T where  C2 Like ‘China^256^0 BeiJing^100^6 ShangHai^1^13’

     

    Select * from T where  C2 Like ‘中国^256^0 中国人^100^0’

     

    Select * from T where  C2 Like ‘BeiJing China

     

     

    Examples

    Select * from T where c1 > 100 and c1 < 200 and c2 match ‘China^256 BeiJing^100 ShangHai

    查找 T C1 大于100 且小于 200 并且 C2 匹配 China BeiJing ShangHai 三个单词的记录。

     

    Update 语句

    Update 语句的语法和SQLUpdate完全相同。Where 子句参加Select 语句。

    Syntax

     

    UPDATE
            {
             table_name WITH ( <table_hint_limited> [...n])
             | view_name
        
        | rowset_function_limited
            }
            SET
            {column_name = {expression | DEFAULT | NULL}
            | @variable = expression
            | @variable = column = expression } [,...n]

        {{[FROM {<table_source>} [,...n] ] n=1

            [WHERE
                <search_condition>] }
            }

    Examples

    Update T Set c1 = 12 where c1 > 100 and c1 < 200 and c2 match ‘China^256.3 BeiJing^100 ShangHai

    查找 T C1 大于100 且小于 200 并且 C2 匹配 China BeiJing ShangHai 三个单词的记录。并将这些记录中c1 字段的值更改为 12

     

    Delete 语句

    Delete 语句的语法和SQLDelete完全相同。Where 子句参加Select 语句。

    Syntax

     

    DELETE
        [FROM ]
            {
             table_name WITH ( <table_hint_limited> [...n])
             | view_name
            
    | rowset_function_limited
            }

            [ FROM {<table_source>} [,...n] ] n=1

        [WHERE
            { <search_condition>
                 ]
            }
        ]



    Examples

    Delete T where c1 > 100 and c1 < 200 and c2 match ‘China^256.3 BeiJing^100 ShangHai

    查找 T C1 大于100 且小于 200 并且 C2 匹配 China BeiJing ShangHai 三个单词的记录。并将这些记录删除。

     

     

  • 相关阅读:
    [HIS] HIT行业常用名词及缩写定义
    String Split 和 Join
    深入解析字符串的比较方法:“==”操作符;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。
    Oracle安装时先决条件检查失败的解决方案
    C#创建XML文件并保存
    关于SQL Server 数据库的备份
    为Windows 7添加“Internet打印”功能
    C#如何使用和开发自定义配置节
    C#中配置文件的使用
    键盘KeyCode值列表
  • 原文地址:https://www.cnblogs.com/eaglet/p/1444778.html
Copyright © 2020-2023  润新知