在列前面添加一些数字

时间:2019-01-07 12:08:41

标签: sql sql-server

我在sql server中有一列,我想为以a开头的单词添加7,为以t开头的单词添加8。

这是我的专栏:

    add-on
    above
    tv
    their
    french

我想要这个:

    7add-on
    7above
    8tv
    8their
    french

我正在寻找可以做到的查询。 非常感谢你!

5 个答案:

答案 0 :(得分:2)

您可以使用left()并进行串联:

select t.*,
       (case left(col, 1) 
             when 'a' then concat(7, col) 
             when 't' then concat(8, col) 
             else col 
        end)
from table t;

答案 1 :(得分:2)

使用带有子字符串的case表达式来获取所需的结果。

select concat(
       (case when substring(col,1,1)='a' then '7' 
             when substring(col,1,1)='t' then '8'
         end
        )
       ,col
       ) as modified_col
  from table 

答案 2 :(得分:0)

您需要2个更新查询。试试:

UPDATE myTable SET myColumn='7'+myColumn WHERE myColumn LIKE 'a%';
UPDATE myTable SET myColumn='8'+myColumn WHERE myColumn LIKE 't%'

答案 3 :(得分:0)

使用CASE语句检查SUBSTRING函数返回的第一个字符,并计算要添加到数据中的前缀:

select
    case substring(column, 1, 1)
    when 'a' then '7'
    when 't' then '8' else '' end + column as NewColumn
from table

答案 4 :(得分:0)

在sql server 2008中:

 select
    case when substring(column,1,1)='a'  then ( '7 ' + column) 
    case when substring(column,1,1)='t' then  ( '8 ' + column) 
    else column end as column from table  

在sql server 2012或更高版本中:

  select
    case when substring(column,1,1)='a'  then concat( '7 ',column) 
    case when substring(column,1,1)='t' then  concat( '8 ',column) 
    else column end as column from table