【问题标题】:How can I Replace using the sql wildcard '%'?如何使用 sql 通配符 '%' 进行替换?
【发布时间】:2017-02-23 03:48:12
【问题描述】:

这是我从 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

我正在尝试删除“名称:”和“位置:”等,但此处使用 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

【问题讨论】:

    标签: sql database tsql powershell replace


    【解决方案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 %';
    

    【讨论】:

    • 我试图只获取这些字段的值,因此我将选择所有值,在本例中为 'SULESRKMA'、'PrimoPDF'、'Microsoft XPS Document Writer'、 “传真”和“CutePDF Writer”。我想放弃像“名称:”这样的部分
    • @SaniT404 更好地解释您的评论.. 我不明白.. 我的回答我错了吗? ..还是不完整?
    • 所以我有单元格“名称:SULESRKMA”我想选择“SULESRKMA”而不是“名称:”
    • 谢谢!这让我走上了正轨。我必须使用的实际代码是:Select SUBSTRING(Result, CHARINDEX(':',Result) +2, 255)
    • @SaniT404 。对 Tsql 正确的是 charindex .. 我已经更新了答案
    【解决方案2】:
    Select RIGHT(ColumnName,CHARINDEX(':',ColumnName) -1)
    

    参考SQL string manipulation [Get all text left of '(']

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

    【讨论】:

    • :SULESRKMA:PrimoPDF oft XPS Document Writer:Fax:CutePDF Writer
    • 抱歉,不小心被tab键输入了^^
    • 但这是我在#output temp 表中得到的输出:code(:SULESRKMA:PrimoPDF oft XPS Document Writer:Fax:CutePDF Writer) 那么为什么 Microsoft XPS 会像那个?
    • 我无法通过您的数据判断这些数据是否是不同的行。如果没有不同的行,我的示例将无法工作。如果它只是一个巨大的文字简介,那就有点困难了。
    • 我是新来的,仍在尝试找出降价。 ` : SULESRKMA : PrimoPDF oft XPS Document Writer : Fax : CutePDF Writer`
    猜你喜欢
    • 2016-11-24
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2013-04-01
    • 2016-01-10
    相关资源
    最近更新 更多