【问题标题】:Replace in a select without adding a new column?在不添加新列的情况下替换选择?
【发布时间】:2020-07-18 06:09:59
【问题描述】:

考虑这些数据:

col1  | col2
kk|kk | kjkjk

我想在选择期间用空格替换col1 中的管道。预期输出:

col1  | col2
kk kk | kjkjk

到目前为止,我有这个:

SELECT  *,  
replace(col1,'|',' ') as col1
FROM TABLE

但是,这会生成以下内容:

col1  | col2  | col1
kk|kk | kjkjk | kk kk

我不想要第三列,而是用替换语句的结果替换第一列的内容。这可能吗?

【问题讨论】:

  • 投反对票的人至少可以解释为什么...?

标签: sql sql-server select replace


【解决方案1】:

不要使用SELECT *。这意味着从FROM 中的对象返回每个 列,其中包括Col1。您不会“替换”SELECT 中的列,然后再定义。 SELECT *, replace(col1,'|',' ') as col1 实际上意味着 SELECT Col1, Col2, replace(col1,'|',' ') as col1

定义你的列:

SELECT REPLACE(col1,'|',' ') AS col1,
       Col2
FROM dbo.[TABLE];

【讨论】:

    【解决方案2】:

    您必须丢失* 通配符并明确列出您要查询的列:

    SELECT REPLACE(col1, '|', ' ') AS col1, col2
    FROM   mytable
    

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多