sql函数的学习

charindex 函数
返回字符或者字符串在另一个字符串中的起始位置。
CHARINDEX 函数调用方法如下:
charindex( expression1 , expression2 [ , start_location ] )
Expression1 是要到 expression2 中寻找的字符中,start_location 是 CHARINDEX 函数开始在 expression2 中找expression1 的位置。
CHARINDEX 函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如 CHARINDEX 没有找到要找的字符串,那么函数整数“0”。

例子;

create table tb(f001 varchar(10))
insert tb select '1'  
insert tb select '2'
insert tb select '1.2'  
insert tb select '3'
insert tb select '1.1.11.1'
insert tb select '1.1.2.1'
insert tb select '2.1.2.1'  
insert tb select '1.1'  
insert tb select '2.1'  
insert tb select '2.2'  
insert tb select '3.1'  
insert tb select '3.2'  
insert tb select '20.1'
insert tb select '1.1.1'
insert tb select '1.1.2'
insert tb select '1.1.3' 

select f001
from
(
   select *,f002=substring(f001,1,charindex('.',f001))
               +replace(substring(f001,charindex('.',f001)+1,10),'.','')
   from tb
) t
order by cast(f002 as decimal(10,5))

drop table tb
/*
1
1.1
1.1.1
1.1.11.1
1.1.2
1.1.2.1
1.1.3
1.2
2
2.1
2.1.2.1
2.2
3
3.1
3.2
20.1

 



InStr 函数
返回某字符串在另一字符串中第一次出现的位置。
InStr 函数调用方法如下:
InStr([start, ]string1, string2[, compare])
参数
start
可选项。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果 start 包含 Null,则会出现错误。如果已指定 compare,则必须要有 start 参数。
string1
必选项。接受搜索的字符串表达式。
string2
必选项。要搜索的字符串表达式。
compare
可选项。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,将执行二进制比较。

两个函数的性质非常效果一样就是搜索一个字符是否出现在另外一个字符串里面

PATINDEX 函数
PATINDEX 函数返回字符或者字符串在另一个字符串或者表达式中的起始位置,PATINDEX 函数支持搜索字符串中使用通配符,这使PATINDEX函数对于变化的搜索字符串很有价值。
和 CHARINDEX 函数一样,PATINDEX 函数返回搜索字符串在被搜索字符串中的起始位置。假如有这样一个PATINDEX 函数:
      PATINDEX(’%BC%’,’ABCD’)
      这个 PATINDEX 函数返回的结果是2,这和 CHARINDEX 函数一样。这里的 % 标记告诉 PATINDEX 函数去找字符串 “BC”,不管被搜索的字符串中在 “BC” 的前后有多少字符!

 

 

IDENTITY ( data_type [ , seed , increment ] ) AS column_name

参数

data_type

标识列的数据类型。标识列的有效数据类型可以是任何整数数据类型分类的数据类型(bit 数据类型除外),也可以是 decimal 数据类型。

seed

要指派给表中第一行的值。给每一个后续行指派下一个标识值,该值等于上一个 IDENTITY 值加上 increment 值。如果既没有指定 seed,也没有指定 increment,那么它们都默认为 1。

increment

用来添加到 seed 值以获得表中连续行的增量。

column_name

将插入到新表中的列的名称。

返回类型

返回与 data_type 相同的类型。

注释

因为该函数在表中创建一个列,所以必须用下列方式中的一种在选择列表中指定该列的名称:

--(1)SELECT IDENTITY(int, 1,1) AS ID_NumINTO NewTableFROM OldTable--(2)SELECT ID_Num = IDENTITY(int, 1, 1)INTO NewTableFROM OldTable示例

下面的示例将来自 pubs 数据库中 employee 表的所有行都插入到名为 employees 的新表。使用 IDENTITY 函数在 employees 表中从 100 而不是 1 开始编标识号。

USE pubsIF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES      WHERE TABLE_NAME = 'employees')   DROP TABLE employeesGOEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'SELECT emp_id AS emp_num,    fname AS first,    minit AS middle,    lname AS last,    IDENTITY(smallint, 100, 1) AS job_num,    job_lvl AS job_level,    pub_id,    hire_dateINTO employees FROM employeeGOUSE pubsEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值