我要实现将180510001去除,变更为18050001
也就是去除第五位数的1,这条语句应该怎么写?
用substring看了好久没看懂
求各位大神讲解
感谢
5 个解决方案
#1
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([col] int)
Insert #T
select 180510001 union all
select 180510002 union all
select 180510003
Go
--测试数据结束
Select LEFT(col,4)+RIGHT(col,4) AS col FROM #T
#2
-- 使用 stuff 更为合适
create table test(name varchar(30))
go
insert into test values('180510001'),('180510002'),('180510003')
go
select name, stuff(name,5,1,'') new_name from test
go
drop table test
go
(3 行受影响)
name new_name
------------------------------ ------------------------------
180510001 18050001
180510002 18050002
180510003 18050003
(3 行受影响)
#3
如果就是要用substring,语句如下:
select SUBSTRING('180510001', 1, 4)+SUBSTRING('180510001', 6, 4)
原理如下,第二行是数字的顺序。所要的结果,就是从第1个数字开始,取4个数字,加上从第6个数字开始,取4个数字。
1805 1 0001
1234 5 6789
select SUBSTRING('180510001', 1, 4)+SUBSTRING('180510001', 6, 4)
原理如下,第二行是数字的顺序。所要的结果,就是从第1个数字开始,取4个数字,加上从第6个数字开始,取4个数字。
1805 1 0001
1234 5 6789
#4
STUFF exactly does what you want>
https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-2017
https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-2017
#5
那用update应该怎么写呢?就是把字段的所有值都批量更改
#1
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([col] int)
Insert #T
select 180510001 union all
select 180510002 union all
select 180510003
Go
--测试数据结束
Select LEFT(col,4)+RIGHT(col,4) AS col FROM #T
#2
-- 使用 stuff 更为合适
create table test(name varchar(30))
go
insert into test values('180510001'),('180510002'),('180510003')
go
select name, stuff(name,5,1,'') new_name from test
go
drop table test
go
(3 行受影响)
name new_name
------------------------------ ------------------------------
180510001 18050001
180510002 18050002
180510003 18050003
(3 行受影响)
#3
如果就是要用substring,语句如下:
select SUBSTRING('180510001', 1, 4)+SUBSTRING('180510001', 6, 4)
原理如下,第二行是数字的顺序。所要的结果,就是从第1个数字开始,取4个数字,加上从第6个数字开始,取4个数字。
1805 1 0001
1234 5 6789
select SUBSTRING('180510001', 1, 4)+SUBSTRING('180510001', 6, 4)
原理如下,第二行是数字的顺序。所要的结果,就是从第1个数字开始,取4个数字,加上从第6个数字开始,取4个数字。
1805 1 0001
1234 5 6789
#4
STUFF exactly does what you want>
https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-2017
https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-2017
#5
那用update应该怎么写呢?就是把字段的所有值都批量更改