sql - 生成随机电话号码的函数

标签 sql postgresql random formatting

我想知道如何创建一个生成以下格式的随机电话号码的函数:

(888) 888-8888

最佳答案

使用 to_char() 效果更好

SELECT to_char(random() * 10000000000, 'FM"("000") "000"-"0000');

比我原来的更简单、更快。将随机数乘以 10^N 得到逗号前的 N 个随机数字。 FM modifier代表“填充模式”并防止使用前导空格字符进行填充。见:

这个更简单的形式也有效:

SELECT to_char(random() * 10000000000, 'FM(000) 000-0000');

双引号只是将常量字符串添加到输出模式的安全方式(禁用可能的特殊含义)。

原始答案

SELECT format('(%s%s%s) %s%s%s-%s%s%s%s'
     , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10])
FROM  (
   SELECT ARRAY (
      SELECT trunc(random() * 10)::int
      FROM   generate_series(1, 10)
      ) AS a
   ) sub;

要么返回:

(213) 633-4337

或类似的。

关于sql - 生成随机电话号码的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36393416/

相关文章:

node.js - pg-promise 有没有办法触发内部事务而不影响外部事务?

sql - PostgreSQL - gin 索引来自许多表和 OR 条件的字段

c++ - 如何在同一个程序/函数中每次生成不同的随机数集?

javascript - RNG 游戏正在制作中,需要帮助确定命中类型

sql - 使用 SQL 选择连续年份数据

mysql - 如何将数据库中的月份范围与两个日期相匹配?

sql - 有没有办法防止触发器被禁用?

MySQL:基于 DELETE 和 INSERT 增加列值的触发器

sql - 是否有 SQL 表约束来确保两列之间存在关系?

php - 生成从 10000000 到 99999999 的唯一随机数