postgresql - 如何在 PostgreSQL 中将字符变化(varcar)与 UUID 进行比较?
问题描述
运算符不存在:字符变化 = uuid
客户端 ID 是 UUId,应该是它不起作用的原因。
我错了,因为我几乎尝试了我想象的所有东西。
SELECT * FROM "cobranca_assinatura"
INNER JOIN "cadastro_cliente" ON ("cobranca_assinatura"."cliente_id" = "cadastro_cliente"."id")
WHERE "cadastro_cliente"."nome" LIKE marcelo% ESCAPE '\'
[2019-03-21 14:40:34] [42883] 错误:运算符不存在:字符变化 = uuid [2019-03-21 14:40:34] Dica:没有运算符与给定名称和参数类型匹配( s)。您可能需要添加显式类型转换。
解决方案
uuid 是一种特定的数据类型。对你来说,它看起来像文本,但它不是。您不能使用字符串函数比较 uuid (uuid like "abc%")
,也不能将其与文本进行比较。
正如 Tamer 建议的那样,如果需要比较,您可以先施放它。
SELECT *
FROM (SELECT 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'::uuid as my_uuid) foo
WHERE my_uuid::text like 'a%'
例如,上面我通过将字符串转换为 uuid 类型来创建 uuid。(如果您尝试将任何旧字符串转换为 uuid,您将失败,因为 'abc'不能是 uuid)。
然后使用名为“my_uuid”的 uuid 项,我将其转换回字符串以使用字符串比较。(注意'A'变成'a'!)
推荐阅读
- javascript - Javascript:查找唯一字符的最长子串的长度
- typescript - 如何导入从模块导出的类?
- javascript - nouislider 步骤不适用于多个范围
- javascript - React hooks 会完全取代基于类的组件创建吗
- sql - 什么是 SQL 中的脏读?
- c# - 如何从存储在数组中的字符串中获取连续的相同字符集?例如' INPUT: Sword|word|cord 输出: ord
- android - 我不明白如何将参数从活动传递到自定义视图
- sql - 将数据从一个表移动到另一个 SQL Server 主键约束
- r - 如何手动构建ggplot2色标?
- c# - 我在使用托管服务标识对使用 AAD 保护的 Azure 应用服务进行身份验证时遇到问题