23

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

4

5 回答 5

30

你就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
于 2012-08-16T14:35:05.177 回答
4

是的,你可以做到。

语法CAST

CAST ( expression AS data_type [ ( length ) ] )

例如:

CAST(MyColumn AS Varchar(10))

CASTSELECT声明中:

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

有关详细信息,请参阅CAST 和 CONVERT (Transact-SQL)

于 2012-08-16T14:38:23.233 回答
2

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

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

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

select (select cast(<val> as <newtype>) . . .)
于 2012-08-16T15:09:29.183 回答
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

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

于 2012-08-16T14:33:46.873 回答
0

当您使用案例时:

CASE
WHEN TB1.COD IS NULL THEN
    TB1.COD || ' - ' || TB1.NAME
ELSE
    TB1.COD || ' - ' || TB1.NAME || ' - ' || TB.NM_TABELAFRETE
END AS NR_FRETE,
于 2014-10-31T13:23:04.520 回答