sql instr()与LOCATE()字符串查找函数

INSTR(str,substr)
返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。 

 代码如下 复制代码
mysql> SELECT INSTR('foobarbar', 'bar');
        -> 4
mysql> SELECT INSTR('xbar', 'foobar');
        -> 0

LOCATE(substr,str) , LOCATE(substr,str,pos)
第一个语法返回字符串 str中子字符串substr的第一个出现位置。第二个语法返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

 代码如下 复制代码
mysql> SELECT LOCATE('bar', 'foobarbar');
        -> 4
mysql> SELECT LOCATE('xbar', 'foobar');
        -> 0
mysql> SELECT LOCATE('bar', 'foobarbar',5);
        -> 7

这个函数支持多字节字元,并且只有当至少有一个参数是二进制字符串时区分大小写。

POSITION(substr IN str)
返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:

 代码如下 复制代码
mysql> SELECT POSITION('bar', ‘foobarbar');
-> 4
mysql> SELECT POSITION('xbar', ‘foobar');
-> 0

效率测试

 代码如下 复制代码

SELECT * FROM `o_soft` WHERE LOCATE('d200',tid2)>0

MySQL 返回的查询结果为空(即零行)。 (查询花费 0.0050 秒)

 代码如下 复制代码

SELECT * FROM `o_soft` WHERE INSTR('d200',tid2)>0

MySQL 返回的查询结果为空(即零行)。 (查询花费 0.0009 秒)

时间: 2024-09-19 09:58:54

sql instr()与LOCATE()字符串查找函数的相关文章

sql 字符串查找函数

拼串的时候用char(39) 代替单引号,char(37)代替% set @sql = 'select * from authors where address like '+char(39)+char(37)+@str+char(37)+char(39) sql 字符串查找函数

C++ string 字符串查找函数

在写C++程序中,总会遇到要从一个字符串中查找一小段子字符串的情况,对于在C中,我们经常用到strstr()或者strchr()这两种方法.而对于C++的string,我们往往会用到find(). C++:#inlcude<string> C: #include<string.h> find():在一个字符串中查找一个指定的单个字符或字符数组.如果找到,就返回首次匹配的开始位置:如果没有查找到匹配的内容,就返回string::npos. find_first_of():在一个目标串

java学习笔记之字符串查找函数

java中查找一个字符串是否包含一个字符,或者一段字符串java.lang.String indexOf方法  代码如下 复制代码 package com.java.lang;   public class StringX {    /**   * @param args   */  public static void main(String[] args) {   java.lang.String a = "my name is yuexiaosheng,my blog is java-er

java indexOf() lastIndexOf() 字符串查找函数

利用indexOf()匹配字符串 返回 String 对象内第一次出现子字符串的字符位置. strObj.indexOf(subString[, startIndex]) 参数 strObj 必选项.String 对象或文字. subString 必选项.要在 String 对象中查找的子字符串. starIndex 可选项.该整数值指出在 String 对象内开始查找的索引.如果省略,则从字符串的开始处查找. 说明 indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位

SQL字符串处理函数总结

 select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where字段1.IndexOf("云")=1; 这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了. left()是sql函数. select 字段1 from 表1 wherecharindex('云',字段1)=1; 字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINARY

SQL字符串处理函数大全

select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.IndexOf("云")=1; 这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了. left()是sql函数. select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINAR

SQL字符串处理函数大全_MsSql

select语句中只能使用sql函数对字段进行操作(链接sql server),select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了.left()是sql函数.select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINARY. 和

SQL Server 字符串处理函数

SQL Server 字符串处理函数 ASCII:返回字符表达式中最左侧的字符的 ASCII 代码值. select ASCII(expression) CHAR:将 int ASCII 代码转换为字符. CHAR 可用于将控制字符插入字符串中 制表符 char(9) 换行符 char(10) 回车符 char(13) CHARINDEX:在 expression2 中搜索 expression1 并返回其起始位置(如果找到).搜索的起始位置为 start_location.如果 express

SQL server中字符串逗号分隔函数分享_MsSql

继SQl -Function创建函数数据库输出的结果用逗号隔开,在开发中也有许多以参数的形式传入带逗号字条串参数(数据大时不建议这样做) 例:查找姓名为"张三,李二" 的数据此时在数据库里就要对此参数做处理如图: 函数代码如下 CREATE FUNCTION [dbo].[fnSplitStr] ( @sText NVARCHAR(Max), @sDelim CHAR(1) ) RETURNS @retArray TABLE ( value VARCHAR(100) ) AS BEGI