2017-01-10 83 views
0

我的意思是...... 比方说,你有下列下如何将数字分配给列中的唯一字符串?

column1 
1. Sedan 
2. Trucks 
3. SUV 
4. SportsCar 

我想要做的就是创建一个插入值1到轿车,卡车,SUV等查询单元格的值..(四单元格的值只是作为一个例子,我需要为数百行做到这一点。)

它将之后是这个样子:

1. Sedan1 
2. Trucks2 
3. SUV3 
4. SportsCar4 

请问这甚至可能吗?

+0

mysql或sql server?请不要标记不涉及的产品 – HoneyBadger

+1

另外,您为什么要这么做呢? – HoneyBadger

+0

同意以前的评论,你可能会这样做来解决另一个问题,但你可能不需要这样做来解决它。鉴于此,你可以使用Row_Number()并将它连接起来吗?有没有一些方法可以用来应用这些数字? – paulbarbin

回答

0

SQL服务器

with Products as 
(
select product, row_number() over(order by a_column) as R_ord 
from mytable 
) 
update Products 
set product = product + cast(R_ord as varchar(50)) 

另外,为什么?为什么不使用表来做到这一点?

+2

'Row_Number'返回'BIGINT',你必须明确地转换成'varchar'。 'product + cast(R_ORD as varchar(50))' –

+0

感谢您的回答,我正在尝试更改已经存在的表中的单元格值。如果我已经有了桌子,那么更好的方法是什么? – user7400192

+0

@Prdp我认为这将作为一个隐式转换处理,但我已经添加了完整性 – JohnHC

0
CREATE TABLE #b 
    ([column1] varchar(9)) 
; 

INSERT INTO #b 
    ([column1]) 
VALUES 
    ('Sedan'), 
    ('Trucks'), 
    ('SUV'), 
    ('SportsCar') 
; 

with Products as 
(
select [column1], row_number() over(order by [column1]) as upd 
from #b 
) 

select [column1] = [column1] + cast(upd as varchar(50)) from products 

输出

column1 
Sedan1 
SportsCar2 
SUV3 
Trucks4 
0

的一种方式是与ROW_NUMBER函数的铸造来连接的值。但如前所述,不知道为什么你想这样做。

select top 10 
column1 + cast(row_number() over (order by column1) as varchar(10)) 
from my table 
+0

格式化您的代码,请.... – scsimon

+0

Site won让我用格式化的代码发布答案。我甚至尝试发帖然后编辑,但失败了。我在Meta上搜索过,发生在其他人身上,但通常不足以修复。也可能是我身边的某种阻挡者。不确定。似乎有时会工作,但不是其他人。 – paulbarbin

+0

我编辑它,你改回来了......现在JohnHC再次为你编辑它。使用格式代码按钮或位于标签键上方的背部刻度 - >' – scsimon

相关问题