如何在sql中获取123456个数字中的前3位数字?

如何在sql中获取123456个数字中的前3位数字?,sql,tsql,sql-server-2000,Sql,Tsql,Sql Server 2000,我的CDR表中有一个名为CallingParty的字段,它包含如下数据: CallingParty ------------ 267672668788 我想选择每个数字的前3个数字,如 CallingParty ------------ 267 如果呼叫方的类型为int: SELECT CAST(LEFT(CallingParty, 3) AS INT) From CDR 使用此查询: SELECT SUBSTRING(CAST(CallingParty AS VARCHAR(50)),

我的CDR表中有一个名为CallingParty的字段,它包含如下数据:

CallingParty
------------
267672668788
我想选择每个数字的前3个数字,如

CallingParty
------------
267

如果呼叫方的类型为int:

SELECT CAST(LEFT(CallingParty, 3) AS INT)
From CDR
使用此查询:

SELECT SUBSTRING(CAST(CallingParty AS VARCHAR(50)), 1, 3) FROM [CDR]
SQL Server有一个Left()函数,但它在字符串上工作得最好。(SQL中的varchar/char)


如果数据长度不变,则始终可以将现有数字除以10*

SELECT FLOOR(267672668788 / 1000000000)
=267
试试这个:

SELECT Substring(callingparty, 1, Length(callingparty) - 9) 
FROM   cdr; 

无需显式地
CAST
LEFT(123456,3)
将执行隐式强制转换。这不是我的意思!您的编辑已经破坏了您的答案,因为现在您有一个悬空的
as INT
我的意思是转换为
varchar
作为
LEFT
函数的输入。有些人可能更喜欢显式演员阵容,但我发现它更可读/没有噪音。这是否回答了你的问题?left更具可读性,并且不易混淆,特别是当一些系统从0开始,而一些系统从1开始时。吻
SELECT Substring(callingparty, 1, Length(callingparty) - 9) 
FROM   cdr;