sql如何转换选择查询

时间:2012-08-16 14:32:24

标签: sql sql-server-2008

是否可以将强制转换函数应用于select语句?如果有,怎么样?我有一个查询返回一个数字,我必须使用一个字符串从另一个表中获取其他信息。

5 个答案:

答案 0 :(得分:26)

你只是CAST()这样

SELECT cast(yourNumber as varchar(10))
FROM yourTable

然后,如果你想JOIN基于它,你可以使用:

SELECT *
FROM yourTable t1
INNER JOIN yourOtherTable t2
    on cast(t1.yourNumber as varchar(10)) = t2.yourString

答案 1 :(得分:4)

是的,你可以做到。

CAST的语法:

CAST ( expression AS data_type [ ( length ) ] )

例如:

CAST(MyColumn AS Varchar(10))
CAST声明中的

SELECT

Select CAST(MyColumn AS Varchar(10)) AS MyColumn
FROM MyTable

有关详情,请参阅CAST and CONVERT (Transact-SQL)

答案 2 :(得分:1)

我将问题解释为在子查询上使用强制转换。是的,你可以这样做:

select cast((<subquery>) as <newtype>)

如果你这样做,那么你需要确保返回一行和一个值。并且,由于它返回一个值,您可以将转换放在子查询中:

select (select cast(<val> as <newtype>) . . .)

答案 3 :(得分:0)

如果你正在使用SQL(你没说):

select cast(column as varchar(200)) from table 

您可以在任何语句中使用它,例如:

select value where othervalue in( select cast(column as varchar(200)) from table)
from othertable

如果你想进行连接查询,答案已经在另一篇文章中了:)

答案 4 :(得分:0)

当你使用案例时:

CASE
WHEN TB1.COD IS NULL THEN
    TB1.COD || ' - ' || TB1.NAME
ELSE
    TB1.COD || ' - ' || TB1.NAME || ' - ' || TB.NM_TABELAFRETE
END AS NR_FRETE,