2017-05-25 29 views
0

如何选择列的前4位数和后4位数,并对其间的所有数字使用“X”位置?SQL Plus在输出中显示前四位和后四位数字

从用户其中user_name ='汤姆

SELECT标识;

Output 
5958694850384567 

我想只得到第一个和最后4个号码与X的作为展示位置的任何数字被屏蔽:

试图让它看起来像

Output:5958XXXXXXXX4567 

这是我到目前为止的查询:

SELECT SUBSTR(id, 1, 4) from users 
where user_name ='Tom' 

谢谢你为你的时间!

回答

0

您是否考虑过简单地使用LEFT()RIGHT()的功能?这些将分别为给定字符串的左侧或右侧提供特定数量的字符。

您也可以结合使用这些使用CONCAT()功能来构建完整的字符串:

SELECT CONCAT(LEFT(id, 4), 'XXXXXXXX', RIGHT(id, 4)) 
    FROM users 
WHERE user_name = 'Tom' 

此外,如果你并不总是有字符串中的字符的给定数量,你可以计算出中间部分

SELECT CONCAT(LEFT(id, 4), REPLICATE('X', LEN(id) - 8), RIGHT(id, 4)) 
    FROM users 
WHERE user_name = 'Tom' 

Oracle版本

:你的输出以及通过 REPLICATE()功能和位数学的

我不知道,你正在使用的Oracle专门和假设SQL Server中,所以我将提供一些类似的代码,在味道来处理这个:

SELECT LEFT(id, 4) || RPAD('X', LEN(id) - 8, 'X') || RIGHT(id, 4) 
    FROM users 
WHERE user_name = 'Tom' 
+0

谢谢@RION!尝试在第1行使用串联错误时出现以下错误: ORA-00909:无效的参数数量 – connollyc4

+0

根据该错误,它看起来像使用Oracle而不是SQL Server。我已经添加了一个可能适用于您的环境的示例。如果没有,让我知道,我会进一步调整。 –

相关问题