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的妙用,找出有妙用的更多相关文章

  1. 2019-02-13 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?

    题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...

  2. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...

  3. 使用T-SQL找出执行时间过长的作业

        有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:   SELECT sj.name , ...

  4. [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 ...

  5. [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 ...

  6. [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 ...

  7. 如何找出标有"App Store 精华","Essentials"的所有软件?

    如何找出标有"App Store 精华","Essentials"的所有软件? 中国区: +"App Store 精华" site:http ...

  8. 在一个SQL Server表中的多个列找出最大值

    在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...

  9. 在数组中找出x+y+z=0的组合

    就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlo ...

随机推荐

  1. java:I/O 根据用户输入反馈信息

    import java.io.*; class userInputIO{ //Java中成员变量有默认初始化,也就是如果不显式设置初始值的话就会被初始化为其类型的默认值(0.false.null等). ...

  2. JavaScript基本程序结构

    条件判断 JavaScript使用if () { ... } else { ... }来进行条件判断.例如,根据年龄显示不同内容,可以用if语句实现如下: var age = 20; if (age ...

  3. Revit 二次开发 沿弧形路径创建拉伸屋顶

    沿弧形路径创建拉伸屋顶 Revit的API中只能按照直线创建拉伸屋顶,不能按照曲线创建拉伸屋顶.在Revit的界面当中,可以用 构建->内建模型,进行放样创建屋顶.但是没有办法代码内建模型. 可 ...

  4. Linux下的动态连接库及其实现机制

    Linux与Windows的动态连接库概念相似,但是实现机制不同.它引入了GOT表和PLT表的概念,综合使用了多种重定位项,实现了"浮动代码",达到了更好的共享性能.本文对这些技术 ...

  5. node.js 异步式I/O 与事件驱动

    Node.js 最大的特点就是异步式 I/O(或者非阻塞 I/O)与事件紧密结合的编程模式.这种模式与传统的同步式 I/O 线性的编程思路有很大的不同,因为控制流很大程度上要靠事件和回调函数来组织,一 ...

  6. 抱怨IT公司人才缺乏?留住现有人才方是正途

    摘要:员工的好坏决定着IT公司的未来,可很多IT公司在抱怨之时自己的人才却正在流失,如何留住现有的优秀员工?国外知名经理人Sharon Florentine建议:改善自己的管理.让员工不断地学习.创建 ...

  7. Android开发之AIDL的使用一--跨应用启动Service

    启动其他App的服务,跨进程启动服务. 与启动本应用的Service一样,使用startService(intent)方法 不同的是intent需要携带的内容不同,需要使用intent的setComp ...

  8. Windows下Vim设置

    进入安装目录,找到_vimrc文件,用文本编辑器打开,在前面加入下述内容 设置中文支持 " 设置编码自动识别, 中文引号显示 " set fileencodings=utf-8,c ...

  9. C#中判断一个网址是否可以打开

    public static void GetPage(String url) { try { // Creates an HttpWebRequest for the specified URL. H ...

  10. String中intern的方法

    首先查看官方API那个的解释: ——————————————————————————————————————— intern public String intern() 返回字符串对象的规范化表示形 ...