【发布时间】:2012-06-05 10:15:08
【问题描述】:
我的 CDR 表中有一个名为 CallingParty 的字段,它包含如下数据:
CallingParty
------------
267672668788
我想选择每个数字的前 3 个数字,例如
CallingParty
------------
267
【问题讨论】:
标签: sql tsql sql-server-2000
我的 CDR 表中有一个名为 CallingParty 的字段,它包含如下数据:
CallingParty
------------
267672668788
我想选择每个数字的前 3 个数字,例如
CallingParty
------------
267
【问题讨论】:
标签: sql tsql sql-server-2000
如果 CallingParty 是 int 类型:
SELECT CAST(LEFT(CallingParty, 3) AS INT)
From CDR
【讨论】:
CAST,LEFT(123456,3) 无论如何都会进行隐式转换。
AS INT 我的意思是转换为varchar 作为LEFT 函数的输入。无论如何,有些人可能更喜欢显式演员,但我发现没有它更具可读性/噪音更小。
SQL Server 有一个 Left() 函数,但它最适用于字符串。 (SQL 中的 varchar/char)
Select left(cast(267672668788 as varchar), 3)
【讨论】:
使用这个查询:
SELECT SUBSTRING(CAST(CallingParty AS VARCHAR(50)), 1, 3) FROM [CDR]
【讨论】:
如果数据长度不变,那么您始终可以除以 10 * 您拥有的位数
SELECT FLOOR(267672668788 / 1000000000)
=267
【讨论】:
试试这个:
SELECT Substring(callingparty, 1, Length(callingparty) - 9)
FROM cdr;
【讨论】: