create table test(型号 varchar(20)) insert test select 'ABC-12B1.3' union all select 'ABC-24B1.0' union all select 'ACD-10B1' goselect substring(型号,charindex('-',型号)+1,2)[数量] from test 数量 ---- 12 24 10(所影响的行数为 3 行)
if object_id('tb') is not null drop table tb go create table tb(id varchar(20)) insert tb select 'ABC-12B1.3' union all select 'ABC-24B1.0' union all select 'ACD-10B1' select substring(id,5,2) from tb
if object_id('tb') is not null drop table tb go create table tb(id varchar(20)) insert tb select 'ABC-12B1.3' union all select 'ABC-24B1.0' union all select 'ACD-10B1' select substring(id,5,2) from tb --从第五位开始取2位 select left(stuff(id,1,charindex('-',id),''),2) as 结果 from tb --先将字符串的‘-’以前的字符删除,再从左边取二位/* 结果 12 24 10 */
有规律
substring(型号,charindex('-',型号)+1,2) as 数量
返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。 语法
SUBSTRING ( expression , start , length ) 参数
expression是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。start是一个整数,指定子串的开始位置。length是一个整数,指定子串的长度(要返回的字符数或字节数)。
删除指定长度的字符并在指定的起始点插入另一组字符。语法
STUFF ( character_expression , start , length , character_expression ) 参数
character_expression由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。start是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。length是一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。返回类型
如果 character_expression 是一个支持的字符数据类型,则返回字符数据。如果 character_expression 是一个支持的 binary 数据类型,则返回二进制数据。注释
可以嵌套字符串函数。
substring(型号,charindex('_',型号),2)
create table test(型号 varchar(20))
insert test
select 'ABC-12B1.3' union all
select 'ABC-24B1.0' union all
select 'ACD-10B1'
goselect substring(型号,charindex('-',型号)+1,2)[数量] from test
数量
----
12
24
10(所影响的行数为 3 行)
go
create table tb(id varchar(20))
insert tb
select
'ABC-12B1.3' union all select
'ABC-24B1.0' union all select
'ACD-10B1' select substring(id,5,2) from tb
go
create table tb(id varchar(20))
insert tb
select
'ABC-12B1.3' union all select
'ABC-24B1.0' union all select
'ACD-10B1' select substring(id,5,2) from tb --从第五位开始取2位
select left(stuff(id,1,charindex('-',id),''),2) as 结果 from tb
--先将字符串的‘-’以前的字符删除,再从左边取二位/*
结果
12
24
10
*/
ABC-12B1.3 2
ABC-24B1.0 3
ACD-100B1 2.5
ABCD-6B1.3 4ACCESS中用“val(mid(型号,InStr(型号,"-")+1,1000)) AS 数量” 就能得出
在取出数量形成的变量,能和别的变量相乘!
数量 总长度
12 24
24 72
100 250
6 24
在取数的过程中不只是取两位,有的时需要取到1位和3位。