diff --git a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleBlobProcessor.java b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleBlobProcessor.java index 63b3b54e..6e498af8 100644 --- a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleBlobProcessor.java +++ b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleBlobProcessor.java @@ -15,7 +15,24 @@ public class OracleBlobProcessor extends DefaultValueProcessor { @Override public String convertSQLValueByType(SQLDataValue dataValue) { - return EasyStringUtils.quoteString(dataValue.getBlobHexString()); + String value = dataValue.getValue(); + if (value.startsWith("0x")) { + // 0xabcd + return EasyStringUtils.quoteString(value.substring(2)); + } else { + //example: hello,world + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + boolean isDigit = (c >= '0' && c <= '9'); + boolean isUpperCaseHex = (c >= 'A' && c <= 'F'); + boolean isLowerCaseHex = (c >= 'a' && c <= 'f'); + if (!isDigit && !isUpperCaseHex && !isLowerCaseHex) { + return EasyStringUtils.quoteString(dataValue.getBlobHexString()); + } + } + // example: abcd1234 + return EasyStringUtils.quoteString(value); + } } @Override diff --git a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleLongRawProcessor.java b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleLongRawProcessor.java index 6f3634c1..dba37668 100644 --- a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleLongRawProcessor.java +++ b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleLongRawProcessor.java @@ -15,7 +15,25 @@ public class OracleLongRawProcessor extends DefaultValueProcessor { @Override public String convertSQLValueByType(SQLDataValue dataValue) { - return EasyStringUtils.quoteString(dataValue.getValue()); + String value = dataValue.getValue(); + if (value.startsWith("0x")) { + // 0xabcd + return EasyStringUtils.quoteString(value.substring(2)); + } else { + //example: hello,world + // TODO: Need to optimize recognition of hexadecimal strings + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + boolean isDigit = (c >= '0' && c <= '9'); + boolean isUpperCaseHex = (c >= 'A' && c <= 'F'); + boolean isLowerCaseHex = (c >= 'a' && c <= 'f'); + if (!isDigit && !isUpperCaseHex && !isLowerCaseHex) { + return EasyStringUtils.quoteString(dataValue.getBlobHexString()); + } + } + // example: abcd1234 + return EasyStringUtils.quoteString(value); + } } @@ -34,4 +52,9 @@ public class OracleLongRawProcessor extends DefaultValueProcessor { return EasyStringUtils.quoteString(blobHexString); } + public static void main(String[] args) { + String value = "0x123456"; + value = value.substring(2); + System.out.println("value = " + value); + } } diff --git a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleRawValueProcessor.java b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleRawValueProcessor.java index db651780..47d7ed36 100644 --- a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleRawValueProcessor.java +++ b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/value/sub/OracleRawValueProcessor.java @@ -14,7 +14,24 @@ public class OracleRawValueProcessor extends DefaultValueProcessor { @Override public String convertSQLValueByType(SQLDataValue dataValue) { - return EasyStringUtils.quoteString(dataValue.getValue()); + String value = dataValue.getValue(); + if (value.startsWith("0x")) { + // 0xabcd + return EasyStringUtils.quoteString(value.substring(2)); + } else { + //example: hello,world + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + boolean isDigit = (c >= '0' && c <= '9'); + boolean isUpperCaseHex = (c >= 'A' && c <= 'F'); + boolean isLowerCaseHex = (c >= 'a' && c <= 'f'); + if (!isDigit && !isUpperCaseHex && !isLowerCaseHex) { + return EasyStringUtils.quoteString(dataValue.getBlobHexString()); + } + } + // example: abcd1234 + return EasyStringUtils.quoteString(value); + } }