南宁学做网站,wordpress php函数,招聘网站大全,全国有名的网站建设公司CRUD问题
选择 id 在的逗号分隔的字符串所表示的数组中的行
如果要将字符串用于连接条件#xff0c;则需要将字符串转换为适当的整数数组。
Select *
from table_name
where id any(string_to_array(?, ,)::int[]);string_to_array(?, ,)::int[] 这部分代码的作用是将一…CRUD问题
选择 id 在的逗号分隔的字符串所表示的数组中的行
如果要将字符串用于连接条件则需要将字符串转换为适当的整数数组。
Select *
from table_name
where id any(string_to_array(?, ,)::int[]);string_to_array(?, ,)::int[] 这部分代码的作用是将一个逗号分隔的字符串转换为一个整数数组。? 是一个占位符你需要在执行这个查询时提供一个实际的值。例如如果你提供的值是 1,2,3那么 string_to_array(?, ,)::int[] 就会返回一个数组 [1, 2, 3]。
a.id ANY(...) 这部分代码的作用是检查 a.id 是否在给定的数组中。如果 a.id 的值在数组中那么这个 WHERE 条件就会为真相应的行就会被选中。
所以整个查询的意思是从 table_name 表中选择那些 id 在给定的逗号分隔的字符串所表示的数组中的行
int可根据需要替换为 bigint
timestamp日期与字符串比较 List selectList(Param(“startTime”) String startTime); 使用::双冒号进行类型转换 select idselectList resultTypecom.entity.UserInfo parameterTypejava.util.ListSELECT *from user_infoWHEREcreate_time gt; #{startTime}::timestampandcreate_time lt; 2020-07-07 16:35:02/selectPS:
#{startTime}::timestamp 可根据需要替换为 date
timestamp时间戳转化后带时分秒
date日期类型转化后不带时分秒
字符串与数值类型不匹配无法比较 SQL: SELECT b.* from b_station_charts_field b WHERE station_type ? Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying integer 这个错误通常是因为在条件中比较了一个字符类型varchar的列与一个整数类型的值导致数据库无法找到对应的操作符。要解决这个问题可以将条件中的参数值转换为正确的数据类型。
例如如果要比较的是一个字符类型的列 station_type 和一个整数类型的参数值可以使用 ::integer 运算符将参数值转换为整数类型示例代码如下
SELECT b.*
FROM b_station_charts_field b
WHERE station_type ?::integer;请注意以上示例中的 ? 是一个占位符需要将其替换为实际的参数值。
如果要比较的是一个整数类型的列和一个字符类型的参数值可以使用 ::varchar 运算符将列的值转换为字符类型示例代码如下
SELECT b.*
FROM b_station_charts_field b
WHERE station_type::varchar ?;同样的需要将以上示例中的 ? 替换为实际的参数值。
使用字符串类型更新时间戳失败 Cause: org.postgresql.util.PSQLException: ERROR: column “rowmodifytime” is of type timestamp without time zone but expression is of type character varying 在更新 PostgreSQL 数据库时尝试将一个字符类型的值赋给一个时间戳类型的列这是不允许的。
需要确保 rowModifyTime 的值是一个有效的时间戳而不是一个字符串。可以使用 TO_TIMESTAMP 函数将字符串转换为时间戳如下所示
UPDATE b_car_table
SET rowModifyTimeTO_TIMESTAMP(?, YYYY-MM-DD HH24:MI:SS),
WHERE vehicleId?;在这个例子中TO_TIMESTAMP 函数将字符串转换为时间戳需要将 ? 替换为时间字符串格式为 ‘YYYY-MM-DD HH24:MI:SS’。
自动将驼峰转成了全部小写数据库中的字段为deptId org.postgresql.util.PSQLException: ERROR: column “deptid” of relation “b_station” does not exist PostgreSQL 默认将标识符如表名、列名转换为小写。这就是为什么在数据库中定义的列名为 “deptId”但在查询时自动转换为了小写的 “deptid”。
如果希望在查询时保留驼峰命名的大小写可以使用双引号将列名括起来。例如可以这样编写查询语句 SELECT deptId FROM b_station;使用双引号将列名括起来后PostgreSQL 将不会对该列名进行转换而会按照指定的大小写进行匹配。
函数不存在
ifnull 函数不存在 org.postgresql.util.PSQLException: ERROR: function ifnull(character varying, unknown) does not exist 在 PostgreSQL 数据库中使用 IFNULL 函数但是 PostgreSQL 并不支持这个函数。IFNULL 是 MySQL 的函数用于检查第一个表达式是否为 NULL如果为 NULL则返回第二个表达式的值。
在 PostgreSQL 中可以使用 COALESCE 函数来达到类似的效果。以下是一个例子
SELECT COALESCE(column_name, default_value)
FROM table_name;在这个例子中COALESCE(column_name, default_value) 将检查 column_name 是否为 NULL如果为 NULL则返回 default_value。table_name 是表名column_name 是想要检查的列。
如果在 Java 代码中使用 IFNULL 函数需要将其替换为 COALESCE 函数并确保 JDBC 查询字符串正确地使用了这个函数。
if函数不存在 改造 IF(bcard.status‘2’,‘已激活’,‘未激活’) 在 PostgreSQL 中可以使用 CASE 表达式对条件进行判断和转换。以下是将原 IF 表达式改写为 CASE 表达式的示例
CASEWHEN bcard.status 2 THEN 已激活ELSE 未激活
END在上面的代码中我们使用 CASE 表达式来根据条件对 bcard.status 的值进行判断。如果 bcard.status 的值等于 ‘2’则返回 ‘已激活’否则返回 ‘未激活’。
group_concat函数不存在 Cause: org.postgresql.util.PSQLException: ERROR: function group_concat(character varying) does not exist 在 PostgreSQL 数据库中使用 group_concat 函数但是 PostgreSQL 并不支持这个函数。group_concat 是 MySQL 的函数用于将多个行的数据连接成一个字符串。
在 PostgreSQL 中可以使用 string_agg 函数来达到类似的效果。以下是一个例子
SELECT string_agg(column_name, ,)
FROM table_name
GROUP BY group_column;在这个例子中string_agg 函数将 column_name 的所有行连接成一个以逗号分隔的字符串。table_name 是表名group_column 是想要按照哪个列进行分组。
unix_timestamp函数不存在 org.postgresql.util.PSQLException: ERROR: function unix_timestamp(timestamp with time zone) does not exist 在 PostgreSQL 数据库中使用 unix_timestamp 函数但是 PostgreSQL 并不支持这个函数。unix_timestamp 是 MySQL 的函数用于将日期或日期时间值转换为 Unix 时间戳。
在 PostgreSQL 中可以使用 EXTRACT 函数和 EPOCH 来达到类似的效果。以下是一个例子
SELECT EXTRACT(EPOCH FROM timestamp_column) FROM table_name;在这个例子中EXTRACT(EPOCH FROM timestamp_column) 将 timestamp_column 的值转换为 Unix 时间戳。table_name 是表名timestamp_column 是时间戳列。
date_format函数不存在 Cause: org.postgresql.util.PSQLException: ERROR: function date_format(timestamp without time zone, unknown) does not exist 在 PostgreSQL 数据库中使用 date_format 函数但是 PostgreSQL 并不支持这个函数。date_format 是 MySQL 的函数用于格式化日期或日期时间值。
在 PostgreSQL 中可以使用 TO_CHAR 函数来达到类似的效果。以下是一个例子
SELECT TO_CHAR(timestamp_column, YYYY-MM-DD HH24:MI:SS)
FROM table_name;在这个例子中TO_CHAR(timestamp_column, ‘YYYY-MM-DD HH24:MI:SS’) 将 timestamp_column 的值格式化为 ‘YYYY-MM-DD HH24:MI:SS’ 格式。table_name 是表名timestamp_column 是时间戳列。
如果在 Java 代码中使用 date_format 函数需要将其替换为 TO_CHAR 函数并确保 JDBC 查询字符串正确地使用了这个函数。
find_in_set 函数不存在
你遇到的问题是在 PostgreSQL 数据库中使用 FIND_IN_SET 函数但是 PostgreSQL 并不支持这个函数。FIND_IN_SET 是 MySQL 的函数用于在逗号分隔的列表中查找值。
在 PostgreSQL 中你可以使用 ANY 或 ANY 来达到类似的效果。以下是一个例子
SELECT *
FROM table_name
WHERE column_name ANY(ARRAY[1,2,3]);在这个例子中column_name ANY(ARRAY[1,2,3]) 将查找 column_name 是否在数组 [1,2,3] 中。table_name 是你的表名column_name 是你想要查找的列。
如果你在 Java 代码中使用 FIND_IN_SET 函数你需要将其替换为 ANY 或 ANY并确保你的 JDBC 查询字符串正确地使用了这个函数。