Как отличить обычные пробельные символы от других пробельных символов - PullRequest
1 голос
/ 31 декабря 2011

Например: в MySQL.тип данных Text, если у нас есть столбец, определенный как Text в таблице MySQL, когда для извлечения значения этого столбца в JDBC вы получите значение с избыточными конечными пробелами, вы можете вызвать String#trim(),, но если такойстолбец предназначен для приема пробелов ( нажатие клавиши пробела при вводе ).Что я могу сделать тогда?

MySQL Text только для примера, рассмотрите другие подобные типы данных в другой базе данных.

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

Итак, ваш вопрос должен быть сформулирован так: «Как я могу избавиться от конечных пробелов, которые моя СУБД помещает в мои поля?»

Ответ прост: никогда не объявляйте столбцы фиксированной ширины, такие как CHAR (10) или NCHAR (10).Эти типы были изобретены еще в эпоху реляционных баз данных, и единственная причина, по которой они все еще существуют, заключается в обратной совместимости с унаследованными системами.

Всегда используйте столбцы переменной длины: VARCHAR, NVARCHAR, TEXT.

Теперь, если ваши столбцы имеют переменной ширины, и все же ваши поля содержат конечные пробелы, это означает, что вы преобразовали свою таблицу из более старой таблицы, в которой были столбцы фиксированной ширины.Вы ничего не можете сделать, кроме как прочитать все свои поля, применить к ним String.Trim() и записать их обратно в базу данных.

1 голос
/ 31 декабря 2011

String.trim() не удалит пробелы внутри строки.

0 голосов
/ 31 декабря 2011

Я думаю, String.trim() делает то, что вы хотите, он удаляет начальные и конечные пробелы. Пробел, который находится внутри строки, останется. Это то, что вы спрашиваете?

...