从列中删除数据并将此子字符串数据用于WHERE子句

时间:2018-09-17 16:49:13

标签: sql sql-server

我有一列存储一个ID,该ID与一个用“-”表示的帐号相结合

例如:1000-701000000788917

我需要能够编写WHERE子句,如果第一个数字为2000,则全部忽略该记录,但是如果结果不是以2000开头,则剥离前5个字符并仅在701000000788917的列中记录目标表。

3 个答案:

答案 0 :(得分:0)

怎么样?

INSERT NewTable (NewID)
SELECT SUBSTRING(ID,6,LEN(ID)) AS ID
FROM MyTable
WHERE LEFT(ID,5) <> '2000-';

这假设您的起始ID为4个字符。

答案 1 :(得分:0)

尝试这些方法

declare @u varchar(max)= '2000-701000000788917'
declare @y varchar(max)= '1000-701000000788917'

select substring(@y,CharIndex('-',@y) + 1,len(@y)) --- get everything after the hyphen

select * from Table where  substring(@u,0,4)  != '2000'  -- get where the first 4 char are not equal to 2000

答案 2 :(得分:0)

SELECT  RIGHT(ID, Len(ID) - CharIndex('-', ID))
FROM    YourTable
WHERE   ID NOT LIKE '2000-%'

它将排除第一个'-'字符之前的所有内容。