sql >> Databáze >  >> RDS >> PostgreSQL

Jaký je encode(, 'escape') ekvivalent PostgreSQL v jazyce Java?

Chcete pole řetězců nebo chcete asdad\000asdasd\000 ? Pracujete s bajtovým polem nebo skutečným řetězcem?

Pole typu řetězec na bajt (pokud pracujete s řetězcem String)

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;
}

bajtové pole na 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;
  }
}

bajtové pole na osmičkové kódovaný řetězec

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. 2 způsoby formátování čísla s úvodními nulami v Oracle

  2. Vytáhněte prvních X slov (nejen znaků) z mySQL

  3. Dynamicky definovat název třídy v modelu peewee

  4. Funkce SQL group_concat na serveru SQL Server