SQL Server:替换(Charindex)

时间:2016-02-15 19:20:53

标签: sql-server charindex

我有一个SQL Server表,其中包含1列中的数字:

1234567000015 
1424567000016 
5849201000018 

我需要一个能从数字右侧删除一个数字charindex()的函数,因此结果必须如下:

substring()

我找到了一些使用scrollObject = dict(direction="down", text="some_text", element=appium_driver_elem.id) self.driver.execute_script("mobile: scrollTo", scrollObject) appium的解决方案,但我的SQL技能很差,所以我真的需要帮助。

由于

4 个答案:

答案 0 :(得分:2)

假设这是varchar数据,这是一个简单的方法来实现这一目标。顺便说一句,我建议你不要使用像#39; no'这样的列名。这是一个保守的词,它非常含糊不清。这是指数字还是相反的是?如果它是数字,我认为最好将列命名为数字是什么。 PartNumber,ItemNumber,CatalogNumber等......

LEFT(no, len(no) - 2) + RIGHT(no, 1)

答案 1 :(得分:0)

尝试使用此查询:

declare @charToReplace char = '1'
select REVERSE(stuff(REVERSE(no), charindex(@charToReplace, REVERSE(no)), 1, ''))
from table

  declare @charToReplace char = '1'
  declare @tmp_table TABLE (NO varchar(16))
  insert into @tmp_table
  select REVERSE(NO)
  from yourtable

  select REVERSE(stuff(NO, charindex(@charToReplace, NO), 1, ''))

答案 2 :(得分:0)

对于您的特定数据,如果数字适合BIGINT,一种简单的方法就是将它们视为数字:

<强>设置

create table #tmp (
    number VARCHAR(16)
)

insert into #tmp values ('12345670000115'), ('14245670000116'), ('58492010000118')
GO

<强>脚本:

select number, cast( (cast(number AS bigint) - 100) / 100 * 10 + cast(number AS bigint) % 100 as VARCHAR(16))
from  #tmp
GO

答案 3 :(得分:0)

我解决问题。有答案我删除一个字符1并更新整个表格。谢谢大家的帮助!

Update myTableName 
set barcode=substring(barcode,1,11)+substring(barcode,13,1) 
where len(barcode)>= 14