如何使用sql通配符'%'替换?

时间:2016-10-13 20:56:35

标签: sql database tsql powershell replace

所以这是我从powershell中获取的数据(实际上有更多,但它都遵循相同的模式):

Name                   : SULESRKMA  1
Location               : Leisure Services - Technology Services 2
DriverName             : KONICA MINOLTA mc4695MF PS PPD 3
Shared                 : False  4
ShareName              :    5
JobCountSinceLastReset : 0  6

我正在尝试删除'Name:'和'Location:',依此类推,但是这里使用REPLACE命令是我的SQL查询的一部分:

SELECT * FROM #ReadCmd
WHERE Result LIKE 'Name   %:%'

INSERT INTO #output(Name)
SELECT REPLACE(Result, '% %: %', '')
From #ReadCmd
WHERE Result LIKE 'Name   %:%'
SELECT * FROM #output

或者例如,在这里:

IF  OBJECT_ID('tempdb..#fields') != 0
    DROP TABLE #fields

CREATE TABLE #fields (Fields varchar(256))
INSERT INTO #fields (Fields)
SELECT REPLACE(Result, ' %: %', '')
FROM #ReadCmd
Where Result Like '% %: %'

关键是,我想用什么都不替换'_________:',但是REPLACE命令将sql通配符'%'作为实际的百分号读取。还有另一种方法可以实现这个目标吗?

在单独的单元格中使用Select RIGHT(Result,CHARINDEX(': ',Result) -1)输出:

            : SULESRKMA
         : PrimoPDF
oft XPS Document Writer
              : Fax
   : CutePDF Writer

2 个答案:

答案 0 :(得分:1)

你可以尝试

SELECT * FROM #ReadCmd
WHERE Result LIKE '%:%' and Result like 'Name %';

如果你想在之后只选择信息:那么你应该使用

SUBSTRING(Result, CHARINDEX(':',Result) +2, 255)
from  #ReadCmd
WHERE Result LIKE '%:%' and Result like 'Name %';

答案 1 :(得分:1)

ClassLoader

请参阅SQL string manipulation [Get all text left of '(']以供参考。

除非我误解你的问题并且你想保留Name和:在那里并且只是删除空格。如果是这样,你的第二和第四个非代码行是矛盾的。