1:以字段开头模糊查询的like的方法查询

select * from t  where  t.user_code like 'A%'

2:以字段开头模糊查询的left(字段,长度)的方法查询

select * from t  where left(t.user_code, 1)='A';

3:字符间隔查询段对应的值以 1,4,6 的格式查询使用find_in_set

select * from t  where FIND_IN_SET('1',t.name);//t.name所查询的字段,所有包含1的数据

-- 匹配数字开头--
select t.member_mobile from shopnc_member_custom t where  t.member_mobile REGEXP '^[0-9]';

-- 匹配字母开头--
select t.member_mobile from shopnc_member_custom t where  t.member_mobile REGEXP '^[a-z]';

select ID,title,author from Article  where CHARINDEX(title,@item)>0

假设你想建立一个与Yahoo功能相似的Internet目录。你可以建立一个表用来保存一系列的站点名称,统一资源定位器(URL),描述,和类别,并答应访问者通过在HTML form中输入要害字来检索这些内容。
假如有一个访问者想从这个目录中得到其描述中包含要害字trading card的站点的列表。要取出正确的站点列表,你也许试图使用这样的查询:

SELECT site_name FROM site_directory WHERE site_desc=’trading card’

这个查询可以工作。但是,它只能返回那些其描述中只有trading card这个字符串的站点。例如,一个描述为We have the greatest collection of trading cards in the world!的站点不会被返回。
要把一个字符串与另一个字符串的一部分相匹配,你需要使用通配符。你使用通配符和要害字LIKE来实现模式匹配。下面的语句使用通配符和要害字LIKE重写了上面的查询,以返回所有正确站点的名字:

SELECT SITE_name FROM site_directory WHERE site_desc LIKE ‘%trading cark%’

在这个例子中,所有其描述中包含表达式trading card的站点都被返回。描述为We have the greatest collection of trading cards in the world!的站点也被返回。当然,假如一个站点的描述中包含I am trading cardboard boxes online ,该站点的名字也被返回。
注重本例中百分号的使用。百分号是通配符的例子之一。它代表0个或多个字符。通过把trading card括在百分号中,所有其中嵌有字符串trading card的字符串都被匹配。
现在,假设你的站点目录变得太大而不能在一页中完全显示。你决定把目录分成两部分。在第一页,你想显示所有首字母在A到M之间的站点。在第二页,你想显示所有首字母在N到Z之间的站点。要得到第一页的站点列表,你可以使用如下的SQL语句:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[A-M]%’

在这个例子中使用了表达式[A-M],只取出那些首字母在A到M之间的站点。中括号([])用来匹配处在指定范围内的单个字符。要得到第二页中显示的站点,应使用这个语句:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[N-Z]%’

在这个例子中,括号中的表达式代表任何处在N到Z之间的单个字符。
假设你的站点目录变得更大了,你现在需要把目录分成更多页。假如你想显示那些以A,B或C开头的站点,你可以用下面的查询来实现:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[ABC]%’

在这个例子中,括号中的表达式不再指定一个范围,而是给出了一些字符。任何一个其名字以这些字符中的任一个开头的站点都将被返回。
通过在括号内的表达式中同时包含一个范围和一些指定的字符,你可以把这两种方法结合起来。例如,用下面的这个查询,你可以取出那些首字母在C到F之间,或者以字母Y开头的站点:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[C-FY]%’

在这个例子中,名字为Collegescape和Yahoo的站点会被选取,而名字为Magicw3的站点则不会被选取。
你也可以使用脱字符(^)来排除特定的字符。例如,要得到那些名字不以Y开头的站点,你可以使用如下的查询:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[^Y]%’

对给定的字符或字符范围均可以使用脱字符。
最后,通过使用下划线字符(_),你可以匹配任何单个字符。例如,下面这个查询返回每一个其名字的第二个字符为任何字母的站点:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘M_crosoft’

这个例子既返回名为Microsoft的站点,也返回名为Macrosoft的站点。但是,名字为Moocrosoft的站点则不被返回。与通配符’%’不同,下划线只代表单个字符。

注重:
假如你想匹配百分号或下划线字符本身,你需要把它们括在方括号中。假如你想匹配连字符(-),应把它指定为方括号中的第一个字符。假如你想匹配方括号,应把它们也括在方括号中。例如,下面的语句返回所有其描述中包含百分号的站点:

SELECT site_name FROM site_directory WHERE site_desc LIKE ‘%[%]%’

匹配发音
Microsoft SQL 有两个答应你按照发音来匹配字符串的函数。函数SOUNDEX()给一个字符串分配一个音标码,函数DIFFERENCE()按照发音比较两个字符串。当你不知道一个名字的确切拼写,但多少知道一点它的发音时,使用这两个函数将有助于你取出该记录。
例如,假如你建立一个Internet目录,你也许想增加一个选项,答应访问者按照站点名的发音来搜索站点,而不是按名字的拼写。考虑如下的语句:

SELECT site_name FROM site_directory WHERE DIFFERENCE(site_name , ‘Microsoft’>3

这个语句使用函数DEFFERENCE()来取得其名字的发音与Microsoft非常相似的站点。函数DIFFERENCE()返回一个0到4之间的数字。假如该函数返回4,表示发音非常相近;假如该函数返回0,说明这两个字符串的发音相差很大。
例如,上面的语句将返回站点名Microsoft和Macrosoft。这两个名字的发音与Microsoft都很相似。假如你把上一语句中的大于3改为大于2,那么名为Zicrosoft和Megasoft的站点也将被返回。最后,假如你只需要差别等级大于1即可,则名为Picosoft和Minisoft的站点也将被匹配。
要深入了解函数DIFFERENCE()是如何工作的,你可以用函数SOUNDEX()来返回函数DIFFERENCE()所使用的音标码。这里有一个例子:

SELECT site_name ‘site name’,SOUNDEX(site_name) ‘sounds like’

这个语句选取字段site_name的所有数据及其音标码。下面是这个查询的结果:

site name sounds like
……………………………………………………………….
Yahoo Y000
Mahoo M000
Microsoft M262
Macrosoft M262
Minisoft M521
Microshoft M262
Zicrosoft Z262
Zaposoft Z121
Millisoft M421
Nanosoft N521
Megasoft M221
Picosoft P221
(12 row(s) affected)

假如你仔细看一下音标码,你会注重到音标码的第一个字母与字段值的第一个字母相同。例如,Yahoo和Mahoo的音标码只有第一个字母不同。你还可以发现Microsoft和Macrosoft的音标码完全相同。
函数DIFFERENDE()比较两个字符串的第一个字母和所有的辅音字母。该函数忽略任何元音字母(包括y),除非一个元音字母是一个字符串的第一个字母。
不幸的是,使用SOUNDEX()和DIFFERENCE()有一个欠缺。WHERE子句中包含这两个函数的查询执行起来效果不好。因此,你应该小心使用这两个函数。

删除空格

有两个函数,TTRIM()和LTRIM(),可以用来从字符串中剪掉空格。函数LTRIM()去除应该字符串前面的所有空格;函数RTRIM()去除一个字符串尾部的所有空格。这些和vbscript中的同名函数功能是一致的。
这里有一个任何使用函数RTRIM()的例子:

SELECT RTRIM(site_name) FROM site_directory

在这个例子中,假如任何一个站点的名字尾部有多余的空格,多余的空格将从查询结果中删去。
你可以嵌套使用这两个函数,把一个字符串前后的空格同时删去:

SELECT LTRIM(RTRIM(site_name) FROM site_directory

你会发现,在从CHAR型字段中剪掉多余的空格时,这两个函数非常有用。记住,假如你把一个字符串保存在CHAR型字段中,该字符串会被追加多余的空格,以匹配该字段的长度。用这两个函数,你可以去掉无用的空格,从而解决这个问题。

select 字段1 from 表1 where 字段1.IndexOf("云")=1;
这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了。
left()是sql函数。
select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于CHAR、VARCHAR、 BINARY、 和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型。可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。
常用的字符串函数有:

一、字符转换函数
1、ASCII()
返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。
2、CHAR()
将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。
3、LOWER()和UPPER()
LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。
4、STR()
把数值型数据转换为字符型数据。
STR (<float_expression>[,length[, <decimal>]])
length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。
当length 或者decimal 为负值时,返回NULL;
当length 小于小数点左边(包括符号位)的位数时,返回length 个*;
先服从length ,再取decimal ;
当返回的字符串位数小于length ,左边补足空格。
二、去空格函数
1、LTRIM() 把字符串头部的空格去掉。

2、RTRIM() 把字符串尾部的空格去掉。

三、取子串函数
1、left()
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。

2、RIGHT()
RIGHT (<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 个字符。

3、SUBSTRING()
SUBSTRING (<expression>, <starting_ position>, length)
返回从字符串左边第starting_ position 个字符起length个字符的部分。

已知: 字段A='F:\photo\Winter Leaves.jpg'   
要求:分段截取每段字符[字段A不能为TEXT类型,否则报错]
解决方法:
+++++++++++++++++++++++++++++++++++++++++++++++++++

---截取字符串A的第一个\左边的字符串
select left(A,charindex('/',A)-1)
输出结果:F:
++++++++++++++++++++++++++++++++++++++++++++++++++++

---截取\中间的字符串
select   left(stuff(A,1,charindex('/',A),''),charindex('/',stuff(A,1,charindex('/',A),''))-1)
输出结果:photo
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

---截取最后一个\后面的字符串
select   reverse(left(reverse(A),charindex('/',reverse(A))-1))
输出结果:Winter Leaves.jpg
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

---截取字符串A的首字幕
select   STUFF(A,1, 1, '')
输出结果::\photo\Winter Leaves.jpg
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

四、字符串比较函数
1、CHARINDEX()
返回字符串中某个指定的子串出现的开始位置。
CHARINDEX (<’substring_expression’>, <expression>)
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。
此函数不能用于TEXT 和IMAGE 数据类型。
2、PATINDEX()
返回字符串中某个指定的子串出现的开始位置。
PATINDEX (<’%substring _expression%’>, <column_ name>)其中子串表达式前后必须有百分号“%”否则返回值为0。
与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。

五、字符串操作函数
1、QUOTENAME()
返回被特定字符括起来的字符串。
QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。
2、REPLICATE()
返回一个重复character_expression 指定次数的字符串。
REPLICATE (character_expression integer_expression) 如果integer_expression 值为负值,则返回NULL 。

3、REVERSE()
将指定的字符串的字符排列顺序颠倒。
REVERSE (<character_expression>) 其中character_expression 可以是字符串、常数或一个列的值。

4、REPLACE()
返回被替换了指定子串的字符串。
REPLACE (<string_expression1>, <string_expression2>, <string_expression3>) 用string_expression3 替换在string_expression1 中的子串string_expression2。

4、SPACE()
返回一个有指定长度的空白字符串。
SPACE (<integer_expression>) 如果integer_expression 值为负值,则返回NULL 。

5、STUFF()
用另一子串替换字符串指定位置、长度的子串。
STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>)
如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。
如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。
六、数据类型转换函数
1、CAST()
CAST (<expression> AS <data_ type>[ length ])

2、CONVERT()
CONVERT (<data_ type>[ length ], <expression> [, style])

1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
2)length用于指定数据的长度,缺省值为30。
3)把CHAR或VARCHAR类型转换为诸如INT或SAMLLINT这样的INTEGER类型、结果必须是带正号或负号的数值。
4)TEXT类型到CHAR或VARCHAR类型转换最多为8000个字符,即CHAR或VARCHAR数据类型是最大长度。
5)IMAGE类型存储的数据转换到BINARY或VARBINARY类型,最多为8000个字符。
6)把整数值转换为MONEY或SMALLMONEY类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。
7)BIT类型的转换把非零值转换为1,并仍以BIT类型存储。
8)试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。
9)用CONVERT()函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。
七、日期函数
1、day(date_expression)
返回date_expression中的日期值

2、month(date_expression)
返回date_expression中的月份值

3、year(date_expression)
返回date_expression中的年份值

4、DATEADD()
DATEADD (<datepart>, <number>, <date>)
返回指定日期date 加上指定的额外日期间隔number 产生的新日期。
5、DATEDIFF()
DATEDIFF (<datepart>, <date1>, <date2>)
返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。

6、DATENAME()
DATENAME (<datepart>, <date>)
以字符串的形式返回日期的指定部分此部分。由datepart 来指定。

7、DATEPART()
DATEPART (<datepart>, <date>)
以整数值的形式返回日期的指定部分。此部分由datepart 来指定。
DATEPART (dd, date) 等同于DAY (date)
DATEPART (mm, date) 等同于MONTH (date)
DATEPART (yy, date) 等同于YEAR (date)

8、GETDATE()
以DATETIME 的缺省格式返回系统当前的日期和时间。

#左右截取指定长度查询 =>beijing

SELECT LEFT('beijing2008',7),RIGHT('beijing2008',4)

# 字符串连接查询,与null连接都为null =>aavvvb

SELECT CONCAT('aa','vvvb')

#位置插入查询 =>beijmeng2008you

SELECT INSERT('beijing2008you',5,1,'me')

# 大小写转换 =>beijign2008

SELECT LOWER('BEIJIGN2008'),UPPER('SASaaa')

# 左右填充查询 =>whwhwhwhwhwhwhwh2008

SELECT LPAD('2008',20,'wh'),RPAD('2005',5,'cs')

# 左右去除空格查询 =>asbe2018

SELECT LTRIM('   asbe2018')

# 复制查询=>liuweiliuweiliuwei

SELECT REPEAT('liuwei',3)

# 替换查询 =>najing

SELECT REPLACE('beijing','bei','na')

# 比较ascii码查询  返回结果为-1,0,1

SELECT STRCMP('a','b')

# 去掉头尾空格查询  =>#beijing x

SELECT TRIM('  #beijing x  ')

# 指定位置截取查询 =>201
SELECT SUBSTRING('beijing2018',8,3)

SQL字符串开头模糊匹配相关推荐

  1. 通用算法-sql相似度模糊匹配

    1.需求描述:数据库采集sql语句的记录表,包含记录编号-ID.日期时间-data.sql语句-statement,对表内每一条记录的sql语句和表内其他记录的sql语句进行模糊匹配,以顺序字符匹配方 ...

  2. js 用正则表达式模仿SQL like % 的模糊匹配

    作者:Yan //过滤筛选 function dCell_ChangeCell(col, row, text) {if(row == 2){var colCount= dCell.GetCols(0) ...

  3. 正则表达式——python对字符串的查找匹配

    Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明 常用的RegEx基础语法 语法 说明 \d 匹配一个数字字符 \D 匹配一个非数字字符 \s 匹配任何不可见 ...

  4. fme结合python-pandas实现图形数据和表格数据的模糊匹配挂接

    1.需求分析 1.shp为原始数据,包含了图形信息和属性信息,可以看到姓名作为挂接项,包含的干扰项目很多,让我们根本没有办法用正则表达式过滤出来 2.xlsx为表格数据,里面包含了我们需要挂接的属性, ...

  5. mysql 反向匹配子串,Mysql 模糊匹配(字符串str中是否包含子字符串substr)

    1.LIKE 通常与 % 一同使用,类似于一个元字符的搜索.若substr不在str中,则返回0. SELECT 'test' LIKE '%e%' as `ret`; # 1 SELECT 'tes ...

  6. (SQL语句)查询条件模糊匹配若干字段

    一.操作环境 数据库版本:sql server 2012 测试数据库:Northwind,安装方法请参考这篇文章 二.查询条件多列模糊匹配 以下是"Orders"的表结构 模糊查询 ...

  7. JQuery 模糊匹配(JQuery 选择器模糊匹配、选择指定属性是以给定字符串开始的元素 )

    我们在使用 JQuery 的时候,有时需要选择多个属性以指定字符串开头或者包含某些字符串的时候. 比如,我们一个页面中,所有的被罚款人的 input 输入框的 id 或者 name命名规则如下:都以 ...

  8. SQL 之 模糊匹配

    模糊匹配 关键字:LIKE , SOUNDEX , DIFFERENCE   1. 模式匹配 在WHERE子句中使用LIKE操作符来查找针对列值的某个部分的匹配.LIKE + 通配符 来指定. SEL ...

  9. SQL多表联合查询时采用字段模糊匹配

    先说一下背景和要求: 背景:由于业务或是其他不描述的原因的问题导致原有存储的数据发生变动,与现有数据有差别,但还是能勉强看明白数据内容. 要求:实现A表的名称字段和B表的名称字段要模糊匹配. 上图: ...

最新文章

  1. 揭开“云杀毒”的真面目
  2. python算法与数据结构-选择排序算法
  3. javascript forEach无法break,使用every代替
  4. tcptracerte参数_TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】
  5. 数据科学 IPython 笔记本 7.6 Pandas 中的数据操作
  6. HDU 6183 2017广西邀请赛:Color it(线段树)
  7. C语言——结构体数组的使用案例(如何判断两个矩形是否相交,其中一个是否包含在另外一个里面,点是否在矩形中)...
  8. Android学习笔记(18):编辑框EditText
  9. Confluence 6 重新获得附件指南
  10. 浅谈未来计算机操作系统的发展方向,浅谈未来计算机操作系统的发展方向
  11. 辉光管时钟系列<三>时钟芯片DS12C887
  12. HandBrake 开源视频转码器、编码转换器、格式转换器
  13. 谈谈用统一网关gate的利与弊
  14. Java程序输出26个大写字母的ASCII对照表
  15. Codeforces-936B Sleepy Game
  16. 微信小程序引入外部icon(阿里巴巴矢量图标)
  17. 使用conda安装python包
  18. SD/TF卡驱动(二)--------SD卡程序初始化流程以及读写
  19. nacos项目启动报错:Connection refused: no further information
  20. wps 如何查找多年前的文档

热门文章

  1. 简单说明JSP和Java的关系_JSP 总结
  2. python5 5的 阵列_Biopython表型微阵列
  3. AI行业精选日报_人工智能(12·16)
  4. SpringBoot中405异常
  5. 夜空中最靓的二狗子是如何让 HTTPS 快上加快的?
  6. mysql是串行还是并行的_sql执行的作业是串行还是并行的?
  7. 【渝粤题库】广东开放大学 文化创意学 形成性考核 (2)
  8. 【C语言】数组知识点总结
  9. 爬取企查查和boss直聘数据
  10. python的matplotlib画饼状图