彩票走势图

数据库管理工具Navicat Premium:如何在 SQL 中计算字符串出现次数

转帖|使用教程|编辑:鲍佳佳|2020-12-09 11:56:43.313|阅读 405 次

概述:今天我们将在这里使用的两个函数是 LENGTH(str) 和 REPLACE(str, from_str, to_str)。LENGTH() 返回字符串的长度(以字节为单位);而 REPLACE() 通过执行区分大小写的匹配,返回字符串 str,并将所有出现的字符串 from_str 替换为字符串 to_str。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

点击下载Navicat Premium最新试用版

尽管 SQL 不像 Java、C ++ 和 PHP 这样的过程编程语言精通字符串处理,但是 SQL 确实提供了许多处理字符串数据的函数。可以使用这些函数来修剪多余的空格或字符,确定字符串的长度以及将多个字段值连接在一起。字符串函数非常值得我们学习,因为它们可以帮助提高代码的效率和可读性。在今天的文章中,我们将学习如何使用几个本机 SQL 字符串函数来计算 char、varchar 或 text 字段中字符串出现的次数。

介绍 LENGTH() 和 REPLACE() 函数

今天我们将在这里使用的两个函数是 LENGTH(str) 和 REPLACE(str, from_str, to_str)。LENGTH() 返回字符串的长度(以字节为单位);而 REPLACE() 通过执行区分大小写的匹配,返回字符串 str,并将所有出现的字符串 from_str 替换为字符串 to_str。

LENGTH() 函数返回字符串的长度(以字节为单位)。这有一些重要的影响,因为这意味着对于包含五个 2 个字节字符的字符串,LENGTH() 会返回 10。若要计算纯字符长度,请改用 CHAR_LENGTH()。

举个例子:

length_function (33K)

这是 REPLACE() 函数的示例,该函数将 URL 的协议从“http”更改为“https”:

replace_function (41K)

开始计数

通过将 LENGTH() 和 REPLACE() 与 ROUND() 函数结合使用,我们可以获得包含文本内容的字段中特定子字符串的计数。这是一个使用 Sakila 示例数据库的例子,在 film 表的 description 字段中返回单词“Documentary”的计数:

count_occurrences (172K)

本质上,我们的查询将目标子字符串的出现替换为空(””)字符串,并比较结果字符串的长度。它们之间的区别是源字段中子字符串出现的次数。

将查询整合到用户函数中

如果你计划在许多不同的表上计算字数或使用各种子字符串值,则应考虑将主要计算合并到自定义用户功能中。这是我在 Navicat 中创建的名为“count_string_instances”的函数:

count_occurrences_function (84K)

测试函数

我们可以通过点击“运行”按钮来就地测试我们的函数。这将打开一个对话框以接受输入参数:

input_param_dialog (21K)

返回的结果确认该函数正常运行:

count_occurrences_function_test_result (18K)

从查询中调用我们的函数

函数准备好后,我们可以调用 count_string_instances() 函数来替换查询的计算部分。当我们开始键入函数名称时,Navicat 的自动建议列表现在包括我们的函数!

auto_complete (49K)

与所有函数一样,插入查询时,它会带有可设置输入参数。我们可以通过使用 TAB 键在它们之间导航

auto_complete_fields (43K)

这是更新后的查询和其结果:

query_with_function (181K)

总结

服务器有许多 SQL 字符串函数可以帮助提高代码的效率和可读性。结合使用时,这些功能尤其强大。在今天的文章中,我们学习如何通过使用 多功能函数和存储过程编辑器创建自定义用户函数来计算 char、varchar 或 text 字段中字符串出现的次数。在慧都17周年庆!限时优惠Navicat Premium正版授权立减1000,一次购买终身享用!点击查看详情


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP