我在Postgres中使用了简化表:
我想要一个可以在其UUID id或其文本上找到用户的查询uid.
SELECT * FROM user
WHERE id = 'jsdfhiureeirh' or uid = 'jsdfhiureeirh';
Run Code Online (Sandbox Code Playgroud)
我的查询生成一个,invalid input syntax for uuid因为我显然没有在这个实例中使用UUID.
如何优化此查询或检查该值是否为有效的UUID?
我正在尝试在redshift中运行我正在选择使用的查询json_extract_path_text.不幸的是,此数据库列中的某些JSON条目无效.
会发生什么: 当查询遇到无效的JSON值时,它会因"JSON解析错误"而停止.
我想要的:忽略该列中包含无效JSON的所有行,但返回可以解析JSON的任何行.
为什么我不能让它做我想做的事情:我认为我不理解Redshift/Postgres中的错误处理.应该可以简单地跳过任何产生错误的行,但我尝试输入EXEC SQL WHENEVER SQLERROR CONTINUE(基于Postgres文档)并在"或接近SQLERROR"时出现"语法错误".
我想将具有逗号整数的"字符变化"类型的列转换为常规整数列.
我想支持从'1'到'10,000,000'的数字.
我尝试使用:to_number(fieldname,'999G999G999'),但只有在格式与字符串的确切长度匹配时才有效.
有没有办法做到这一点支持从'1'到'10,000,000'?
我在重排数据表方面有一些操作,到目前为止效果很好。
在一个超过 50000 行的表格中,我有文本列,其中文本应该仅为数字。
现在我想将它转换为整数列。
所以:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE integer;
Run Code Online (Sandbox Code Playgroud)
这会产生错误 42804:*datatype_mismatch*
通过阅读文档,我找到了解决方案:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE integer USING (TRIM(mycolumn)::integer);
Run Code Online (Sandbox Code Playgroud)
但我知道数据在数字顺序方面可能不正确,因为这“掩盖”了错误,并且列有可能被编辑(手动)。毕竟,也许只是添加了尾随空格或进行了其他一些小的编辑。
我有数据备份。
我如何找到给定列的哪个确切单元格包含错误以及哪个值不能通过一些适合从 pgadmin 使用的方便查询转换为 int?
如果不是太复杂,请查询。
如何选择特定列中具有非整数值的记录?
我尝试过:
SELECT * FROM tableName WHERE status !~ '^\d+?\$'
Run Code Online (Sandbox Code Playgroud)
我想找到所有不存储精确整数表示的记录。
Column | Type | Modifiers
------------+-----------------------+-----------
status | charecter varying(25) |
Run Code Online (Sandbox Code Playgroud)