如果字段长度为 8,则如何验证我的查询,然后添加'+973'



目前我的数据库中有一些字段有 8 个数字长。我想在查询中添加验证 这样,如果3888991一个数字,那么我应该使用 CASE 在开头添加 +973

select * 
from contact 
where length(mobile) = 8
Original                '38881991'
After adding validation '+97338881991'

请注意,此字符串:3888991只有 7个字符长。

使用此查询,您将从列中选择长度为 8 个字符的所有值。如果这是真的,您将在它们上添加"+973"。但这是选择性的。如果您想更新声明,请发表评论。(在此示例中,列名称为number_phone,表称为测试(。

使用||来连接两个字符串,如示例中所示。

select case when length(number_phone) = 8 then '+973' || number_phone
else number_phone
end
from test;

这是一个演示

您也可以使用DECODE

select decode(length(number_phone), 8, '+973' || number_phone,number_phone ) 
from test;

这是一个演示

如果您打算仅选择长度为 8 个字符的数字,并且您不想选择长度为 8 个字符的数字,那么:

SELECT '+973' || number_phone as number_phone
FROM TEST 
WHERE LENGTH(number_phone) = 8;

这是一个演示

试试这个语句:

SELECT (CASE 
WHEN LENGTH(MOBILE) = 8 THEN CONCAT('+973', MOBILE) 
ELSE MOBILE 
END) AS MOBILE 
FROM CONTACT 
WHERE LENGTH(MOBILE) = 8;

使用CASE验证手机号码,并使用CONCAT附加一个字符串。

这是更干净的方法

演示

我会使用BETWEEN关键字而不是LENGTH,以便在有MOBILE列时使用index。对于串联,请使用CASE||(串联运算符(

SELECT
CASE
WHEN MOBILE BETWEEN 10000000 AND 99999999 THEN '+973' || MOBILE
ELSE MOBILE
END
FROM
CONTACT

干杯!!

最新更新