我在sql server中有一列,我想为以a开头的单词添加7,为以t开头的单词添加8。
这是我的专栏:
add-on
above
tv
their
french
我想要这个:
7add-on
7above
8tv
8their
french
我正在寻找可以做到的查询。 非常感谢你!
答案 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