显示单个值的2个值

时间:2010-12-31 08:15:32

标签: sql sql-server sql-server-2005

我的列值为ProductId - 102,但当我想将其显示为ProductId - 1 DeviceId - 02

我将如何展示它?

查询将如何?

提前感谢。

3 个答案:

答案 0 :(得分:2)

这些假设设备ID是最右边的2位

varchar列。如果是char,则转换为varchar和LTRIM

SELECT
    REVERSE(SUBSTRING(REVERSE(MyCol), 3, 8000) AS ProductID,
    RIGHT(MyCol, 2) AS DeviceID

整数列

SELECT
    MyCol / 100 AS ProductID,  --integer arithmetic
    MyCol % 100 AS DeviceID -- modulo

答案 1 :(得分:1)

以下应该可以帮到你

选择'ProductId - 102','ProductId - '+ left(right('ProductId - 102',3),1),'DeviceId - '+ right('ProductId - 102',2)

答案 2 :(得分:1)

您会发现使用SQL有很多方法可以实现相同的目标。 从更好的编码角度来看,你应该将ProductID和DeviceID分为2列,然后如果你必须将它们一起显示为1,你可以将它们组合起来。这样,在搜索中,您可以快速找到DeviceID 47,而无需解析整个数据库。

假设您有一个名为PRODUCTS的表 和ProductID的值为“1”,DeviceID为“02”

您需要做的就是

选择ProductID + DeviceID作为CombinedID

它将返回:ProductID - 102

如果您仍有合理的商业理由,可以按照自己的方式进行操作:

假设您有一个名为PRODUCTS的表 和ProductID的值为'ProductID - 102'

如果您想使用完整的ProductID

从产品中选择ProductID

如果您想从设备ID中分离出产品

您的查询将是    SELECT LEFT(ProductID,len(ProductID)-2)+'设备ID - '+ RIGHT(ProductID,2)来自产品

这将为您提供分解的ProductID和DeviceID ...希望有帮助