MSSQLSERVER- CharIndex的妙用,找出有妙用
CharIndex
1:CharIndex语法: CharIndex(expression1,expression2[,start_location])
2:参数 expression1 一个表达式,其中包含要查找的字符的序列。expression1是一个字符串数据类别的表达式。 expression2 一个表达式,通常是一个为指定序列搜索的列。expression2属于字符串数据类别. start_location 开始在expression2中搜索expression1时的字符位置。如果start_location未被指定、是一个负数或零,则将从espression2的开头开始搜索。start_location可以是bigint类型。
3:返回类型如果expression2的数据类型为varchar(max),nvarchar(max)或varbinnary(max),则为bigint,否则为int。
4:备注如果在expression2内找不到expression1,则charindex返回0. charindex将根据输入的排序规则执行比较操作。若要以指定排序规则进行比较,则可以使用collate将显式排序规则应用于输入值。返回的开始位置从1开始,而非从0开始。
5:例子
select charindex('A','BADF',1) :2
select charindex('A','BADF',0) :2
select charindex('A','BADF',2) :2
select charindex('A','BADF',3) :0
select charindex('G','BADF',3) :0
二、substring
1、语法
substring(expression,start,length);
2、参数
expression
是字符串、二级制字符串、文本、图像、列或包含列的表达式。不要使用包含聚合函数的表达式。
start
指定字符串开始位置的整数。start可以为bigint类型。
length
一个整数,指定要返回的expression的字符数或字节数。如果length为负,则会返回错误。length可以是bigint类型。
3.备注
必须以字符数指定使用ntext、char或varchar数据类型的偏移量(start和length)。必须以字节数指定使用text、image、binary或varbinary等数据类型的偏移量。
4、例子:
select substring('GXS',-1,3) :G
select substring('GXS',-1,2) :NULL
select substring('GXS',0,1) :NULL
select substring('GXS',1,1) :G
select substring('GXS',1,2) :GX
SubString和CharIndex结合使用
select substring('A,B,C,D',0,charindex(',','A,B,C,D',0))
整数除整数后,如果最后是整数,说明数据正确,找出错误的数据(找出有小数点的数据)
SELECT PMX.DJBH,SP.SPDM,PD.BYZD7,PMX.SL,SP.CUST_SPBZGG,CONVERT(FLOAT,PMX.SL)/CONVERT(FLOAT,SP.CUST_SPBZGG)
,CHARINDEX('.',CONVERT(NVARCHAR(60),CONVERT(FLOAT,PMX.SL)/CONVERT(FLOAT,SP.CUST_SPBZGG)),0)
FROM pfjrdmx PMX
LEFT JOIN PFJRD PD ON PMX.DJBH = PD.DJBH
LEFT JOIN dbo.SHANGPIN SP ON PMX.SPDM = SP.SPDM
WHERE PD.BYZD7 = '' AND SP.CUST_SPBZGG!=1
--AND CHARINDEX('.',CONVERT(NVARCHAR(60),CONVERT(FLOAT,PMX.SL)/CONVERT(FLOAT,SP.CUST_SPBZGG)),0)>0
AND CHARINDEX('.',CONVERT(NVARCHAR(60),CONVERT(FLOAT,PMX.SL)/CONVERT(FLOAT,SP.CUST_SPBZGG)),0)!=''
MSSQLSERVER- CharIndex的妙用,找出有妙用的更多相关文章
- 2019-02-13 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?
题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...
- Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化
9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...
- 使用T-SQL找出执行时间过长的作业
有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下: SELECT sj.name , ...
- [LeetCode] Find All Numbers Disappeared in an Array 找出数组中所有消失的数字
Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot ...
- [LeetCode] Find All Duplicates in an Array 找出数组中所有重复项
Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others ...
- [LeetCode] Find Median from Data Stream 找出数据流的中位数
Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...
- 如何找出标有"App Store 精华","Essentials"的所有软件?
如何找出标有"App Store 精华","Essentials"的所有软件? 中国区: +"App Store 精华" site:http ...
- 在一个SQL Server表中的多个列找出最大值
在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...
- 在数组中找出x+y+z=0的组合
就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlo ...
随机推荐
- P114、面试题17:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增顺序的.struct ListNode{ int m_nKey; ListNode* m_p ...
- linux page cache和buffer cache
主要区别是,buffer cache缓存元信息,page cache缓存文件数据 buffer 与 cache 是作为磁盘文件缓存(磁盘高速缓存disk cache)来使用,主要目的提高文件系统系性能 ...
- ActiveMQ可靠性机制
消息的签收(Acknowledgment): 客户端成功接收一条消息的标志是这条消息被签收. 成功接收一条消息一般包括如下三个阶段: (1) 客户端接收消息 (2) 客户端处理消息 (3) 消息 ...
- 数据库 MySQL Jdbc JDBC的六个固定步骤
*0 案例: a)在JavaScript中使用正则表达式,在JS中正则表达式的定界符是:// var regexp = /^[0-9]+$/; if(regexp.test(nu ...
- Git教程(9)集中式工作方式常用的设计分支的方案
Git是一个复杂的版本管理系统,管理代码有很多工作方式,如集中式,管理者式,司令/副官式 本文是假设选用集中式工作方式时,设计分支的方案. 中小型项目: 维护两个长期分支,分别是master 和 de ...
- 【HDOJ】4297 One and One Story
综合性很强的题目.存在环,可以用tarjan处理,然后需要求LCA.并查集+RMQ可以搞.非常不错的题目. /* 4297 */ #include <iostream> #include ...
- [转载]12款免费与开源的NoSQL数据库介绍
Naresh Kumar是位软件工程师与热情的博主,对于编程与新事物拥有极大的兴趣,非常乐于与其他开发者和程序员分享技术上的研究成果.近日,Naresh撰文谈到了12款知名的免费.开源NoSQL数据库 ...
- JSOI2007文本生成器
1030: [JSOI2007]文本生成器 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1613 Solved: 656[Submit][Statu ...
- 《C#并行编程高级教程》第8章 线程池 笔记
主要的几个概念(详细最好还是看书,配合插图看) 任务是会被分配到线程上的,而这些线程都在线程池引擎下管理 线程池引擎管理着合适数量的线程池,线程从全局队列获取工作项执行. .NET4 Framew ...
- HTML5 jQuery图片上传前预览
hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images,本例子主要是使用HTML5 的File API,建立一個可存取到该file的url,一个空的img标签,ID为img0,把选择 ...