如何在sql中获取123456个数字中的前3位数字?
我的CDR表中有一个名为CallingParty的字段,它包含如下数据:如何在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)),
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;