我有包含日期和批号的数据。我需要能够减少批号,从每一个中删除开头的单词“ Job”。我遇到的问题是每个结果都是不同的,并且长度也不同。
要尝试处理此问题,我尝试使用LEFT
和CHARINDEX
对其进行修整,但返回语法错误。由于我在开放式边缘v10进度odbc数据库上使用MS Query,因此不清楚问题是什么。下面是我生成的代码。
SELECT
Delivery_0.DelProposedDate
, Delivery_0.DelBatchNumber
, LEFT(Delivery_0.DelBatchNumber,CHARINDEX(' ',Delivery_0.DelBatchNumber)-1) as 'JobID'
FROM SBS.PUB.Delivery Delivery_0
当前数据如下:
DelProposedDate DelBatchNumber
05/05/2017 Job 321924
08/02/2019 Job 356812/4
29/03/2017 Job 328585
我正在尝试使其看起来像这样:
DelProposedDate DelBatchNumber JobID
05/05/2017 Job 321924 321924
08/02/2019 Job 356812/4 356812/4
29/03/2017 Job 328585 328585
答案 0 :(得分:1)
您要排除最左边的4个字符(“作业”)。这与显示最右边的x个字符相同,其中x =字符串长度-4。我对Progress的SQL变体不是那么熟悉,但是类似:
Right(DelBatchNumber, Len(DelBatchNumber) - 4)
会这样做。您可能需要用“ Right”和“ Len”代替“ Progress”,并可能检查“ Right Take”参数的顺序。
答案 1 :(得分:0)
尝试
select replace ('Job 321924','Job ','')
输出
'321924'
第一个参数是您要更改的字符串, 第二个参数是您要替换的字符串, 第三个参数是您要替换的字符串。
所以在这里,我只是用一个空字符串替换了'Job'
请注意,它返回的是字符串而不是整数,如果要将结果作为整数,则可能需要使用CONVERT / CAST
答案 2 :(得分:0)
您可以尝试使用这种方法,尝试用空字符串替换'Job'字符串:
SELECT
Delivery_0.DelProposedDate
, Delivery_0.DelBatchNumber
, REPLACE(Delivery_0.DelBatchNumber,'Job ','') as 'JobID'
FROM SBS.PUB.Delivery Delivery_0
答案 3 :(得分:0)