mysql - BigQuery REGEXP_REPLACE

标签 mysql sql node.js google-bigquery

我有一个定义为的查询;

var query = " SELECT " +
            "REGEXP_REPLACE(TRIM(destination_value), r'[^\d]+', '') " +
            "FROM table1";
console.log(query,'query');
bigquery.query(query, function(err, rows) {
            if (err === null) {
                return resolve(rows);
            }else{
                return reject(err);
            }
            });

当我打印它返回的查询时

SELECT REGEXP_REPLACE(TRIM(destination_value), r'[d]+', '') FROM `table1`;

为什么我的查询中的特殊字符在我控制台时不存在?我做错了什么吗?

提前致谢。

最佳答案

您需要对正则表达式元字符 \d 中的反斜杠进行两次转义,因为第一个反斜杠将被 JavaScript 使用。尝试以下操作:

var query = "SELECT " +
            "REGEXP_REPLACE(TRIM(destination_value), r'[\^\\d]+', '') " +
            "FROM table1";

我不希望 ^ 也需要转义,但我已经这样做了,因为看起来这个字符也导致了问题。您可以在下面的演示中验证查询是否正确打印。

Demo

关于mysql - BigQuery REGEXP_REPLACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47884599/

相关文章:

sql - 使用 T-SQL 附加多个数据库

java - 选择查询以查找连续的最大日期

javascript - 在 javascript 对象内部时,[Function](用方括号括起来)意味着什么?

javascript - 从动态外部文件运行 Nodejs 函数

php - 难以从动态下拉菜单中获得发布值(value)

php - 将 2 个下拉列表的值合并到 1 个 MySQL 查询中

SQL 错误向表添加约束,ORA-01652 - 无法扩展临时段

node.js - 当数据量很大时,Angular 2 http get 请求被调用两次

php - 使用 AJAX 从 SQL 获取信息并放入表中

php - 从 Laravel 数据库列获取值(value)