Использование функций Couchbase String в ответе N1QL
Я хочу получить и манипулировать некоторыми документами Couchbase, то есть получить и выполнить некоторые манипуляции со строками, но я не вижу в Интернете примера для начинающих.
Я использую правильный подход здесь или есть более простой способ...?
SELECT meta().id
FROM bucket_foo
where meta().id like "%-foobar"
ORDER BY meta().id
Это дает мне результат запроса...
[
{
"id": "172.26.138.52-foobar"
},
{
"id": "172.26.138.53-foobar"
},
{
"id": "172.26.138.64-foobar"
}
]
Я хочу удалить суффикс, т.е. преобразовать его в нечто вроде:
[
{
"id": "172.26.138.52"
},
{
"id": "172.26.138.53"
},
{
"id": "172.26.138.64"
}
]
поэтому после прочтения https://developer.couchbase.com/documentation/server/4.0/n1ql/n1ql-language-reference/stringfun.html я попытался...
SELECT REPLACE(
(SELECT meta().id FROM foo where meta().id like "%-foobar" ORDER BY meta().id)
, "-foobar", "") as replace_all;
но я получаю
[
{
"replace_all": null
}
]
[Я полный новичок Couchbase.]
1 ответ
Решение
Вы находитесь в правильном подходе, подзапрос возвращает массив, и вы не можете заменить массив. В этом случае подзапрос не требуется.
Вы можете использовать RTRIM() или REPLACE() или SUBSTR() или аналогичные функции
SELECT RTRIM(meta().id,"-foobar") AS id
FROM bucket_foo
where meta().id like "%-foobar"
ORDER BY id;
ИЛИ ЖЕ
SELECT REPLACE(meta().id,"-foobar","") AS id
FROM bucket_foo
where meta().id like "%-foobar"
ORDER BY id;
ИЛИ ЖЕ
SELECT SUBSTR(meta().id,0,LENGTH(meta().id)-LENGTH("-foobar")) AS id
FROM bucket_foo
where meta().id like "%-foobar"
ORDER BY id;