目前我的数据库中有一些字段有 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
干杯!!