更新日期:2024年09月11日
使用SELECT 语句来查询文本内容,
其中使用了CONTAINS()函数作为查询条件,
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
926
对设置了全文索引的列内容进行快速匹配。
查询语法:
SELECT query_column FROM table_name
WHERE CONTAINS (column_name, Query Content[, score_flag])
表5- 45 参数说明
参数名称
说
明
query_column
需要显示的查询结果列。
table_name
表名。
column_name
查询列,也即创建了全文索引的列名,不支持多列查询。
Query Content
需要查找的内容,为字符型,需要使用'...'引用查询内容。内
容支持文本查询、逻辑运算查询表达式、NEAR 函数等。
内容支持的最大长度为255。
score_flag
SCORE 标号,可选项,如不填写,则表示不输出评估值, 应
与SCORE 函数一起使用。
说明
当一条查询语句中含有多个contains 函数条件时,score_flag 参数值应互
不相同,否则会报语法错误信息:
Incorrect arguments to CONTAINS FUNCTION - SCORE FLAG
COLLISION。
示例
示例1:查询有多少条短信包含“南大通用”这4 个字符。
gbase> SELECT COUNT(*) FROM sms WHERE contains(MB_Text, '南大通
用');
+----------+
| COUNT(*) |
+----------+
|
1 |
+----------+
1 row in set
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
927
gbase> SELECT COUNT(*) FROM sms WHERE contains(MB_Text, '南大通
用', 0);
+----------+
| COUNT(*) |
+----------+
|
1 |
+----------+
1 row in set
示例2:查询包含“南开”的短信并且按照no 倒排序。
gbase> SELECT MB_No AS no,MB_Text FROM sms WHERE
contains(MB_Text, '"南大"',1) ORDER BY no DESC;
+-------------+-----------------------------------------------------------------------------------
-------------------------------------------------+
| no
| MB_Text
|
+-------------+-----------------------------------------------------------------------------------
-------------------------------------------------+
| 13323315181 | 南大通用数据技术股份有限公司地址:天津华苑产业区海泰
发展六道6 号海泰绿色产业基地J 座(300384)
|
| 13023315123 | 晚上去南大上英语课,在南大主楼115 房间
|
| 13023315123 | 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
+-------------+-----------------------------------------------------------------------------------
-------------------------------------------------+
3 rows in set
示例3:
contains 函数用于where 条件中有效,
不支持在having 条件中搜索,
即在
having 条件中无效。
gbase> SELECT MB_TEXT FROM sms WHERE contains(MB_Text, '南大');
+--------------------------------------------------------+
| MB_Text
|
+--------------------------------------------------------+
| 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
| 晚上去南大上英语课,在南大主楼115 房间
|
| 周末去天津博物馆参观,在南开区南门外大街公交车站集合
|
| 南大通用数据技术股份有限公司地址:...
|
+--------------------------------------------------------+
4 rows in set (Elapsed: 00:00:00.02)
gbase> SELECT MB_TEXT FROM sms GROUP BY MB_TEXT having
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
928
contains(MB_Text, '南大');
ERROR 1149 (42000): contains function can ONLY in where clause and on clause
注意
Contains 函数只能用在Where 子句中,如果包含在其他类型子句则报告
错误:
gbase> SELECT
contains(a ,'通用')
FROM t WHERE contains(a ,'
中国') AND score(0) >10;
ERROR 1149 (42000): contains function can ONLY in WHERE clause