sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad är encode(, 'escape') PostgreSQL-ekvivalenten i java?

Vill du ha en rad strängar eller vill du ha asdad\000asdasd\000 ? Arbetar du med en byte-array eller en faktisk sträng?

Sträng till byte-array (om du arbetar med en sträng)

String str = "\x61736461640061736461736400"
str = str.substring(2); //get rid of \x
byte [] bytes = new byte[str.length()/2];
for(int i = 0; i < result.length; i++) {
  String numberStr = str.substring(i*2,i*2+2);
  int numberInt = Integer.parseInt(numberStr);
  bytes[i] = (byte) numberInt;
}

byte array till String ArrayList

ArrayList<String> result = new ArrayList<String>();
int startIndex = 0;
for(int i = 0; i < bytes.length; i++) {
  if(bytes[i] == 0) {
    if(startIndex > i) {
      byte [] stringBytes = new byte[i - startIndex];
      for(int j = startIndex; j < i; j++) {
        stringBytes[j-startIndex] = bytes[j];
      }
      result.add(new String(stringBytes, "US-ASCII"));
    }
    startIndex = i+1;
  }
}

byte array till oktal escaped sträng

DecimalFormat formatter = new DecimalFormat("000");
StringBuilder resultBuilder = new StringBuilder();
for(byte b : bytes) {
  if(b > 0) {
    char c = (char) b;
    resultBuilder.append(c);
  } else {
    int bInt = b & 0xFF;
    String octal = Integer.toString(bInt, 8);
    int numPadZeroesNeeded = 3 - octal.length();
    resultBuilder.append('\');
    for(int i = 0; i < numPadZeroesNeeded; i++) {
      resultBuilder.append('0');
    }
    resultBuilder.append(octal);
  }
}



  1. Ändrade PDO::ATTR_EMULATE_PREPARES till FALSE och får ett fel på Ogiltigt parameternummer

  2. Hur installerar jag mysql från batchfil?

  3. Varför är det bäst att lagra ett telefonnummer som en sträng kontra heltal?

  4. Autoinkrementera, men utelämna befintliga värden i kolumnen