Архив метки: сортировка

1С сортировка структуры

Хотя в синтаксисе обьекта структуры в 1С нет функции сортировки, тем не менее иногда просто необходимо иметь остортированную структуру. Поможет следующая функция:

&НаСервере
Функция сортировкаструктуры(ОтчетСтруктура)
			//сортировка структуры
		ТЗ = Новый ТаблицаЗначений;
	    ТЗ.Колонки.Добавить("Ключ");
	    ТЗ.Колонки.Добавить("Значение");
	    Для каждого элемент из ОтчетСтруктура Цикл
	        новСтрока = ТЗ.Добавить();
	        новСтрока.Ключ = Элемент.Ключ;
	        новСтрока.Значение = Элемент.Значение;
	    КонецЦикла;
	    ТЗ.Сортировать("Значение Убыв");
	    ОтчетСтруктура.Очистить();
	    Для каждого строкаТЗ из ТЗ Цикл
	        ОтчетСтруктура.Вставить(строкаТЗ.Ключ,строкаТЗ.Значение);
	    КонецЦикла;		
		//

Возврат ОтчетСтруктура;
КонецФункции

Mysql сортировка текстового поля как числа

Задача: отсортировать некое текстовое поле, чтобы сортировка шла, как будто в нем находится число, а не текст.

Решение:

order by cast(address_flat.name as signed) asc

Функция CAST имеет следующий синтаксис:
CAST(expression AS type)
,где аргумент type представляет один из типов:

  • BINARY
  • CHAR (Новшество в 4.0.6)
  • DATE
  • DATETIME
  • SIGNED {INTEGER}
  • TIME
  • UNSIGNED {INTEGER}

Сортировка в MySQL кириллицы utf8-general-ci

загруженное (1)Дано: MySQL 5.1.72, таблицы созданные в utf8-general-ci, установка соединения вызывается следующей функцией:

function connect($host,$name,$pass,$base){
 $this->idsqlconnection=new mysqli($host,$name,$pass,$base);
 if (mysqli_connect_errno()) {
 $serr=mysqli_connect_error();
 die("Error connect to Mysql or select base: $serr");
 } 
 $result = mysqli_query($this->idsqlconnection,"SET NAMES utf8_general_ci"); 
 mysqli_set_charset($this->idsqlconnection, "utf8_general_ci");
 
 }

И хоть ты тресни, запрос вида:

$SQL = "SELECT * FROM places WHERE orgid='$orgid' AND active=1 ORDER BY name";
 $result = $sqlcn->ExecuteSQL( $SQL ) or die("Не могу выбрать список помещений!".mysqli_error($sqlcn->idsqlconnection));

Сортировался по непонятно каким критериям. Потеряв на поиск причины  несколько часов, перепробовав кучу «рецептов», пришлось заворачивать сортировку запросов в команду binary(), т.е. вот так:

$SQL = "SELECT * FROM places WHERE orgid='$orgid' AND active=1 ORDER BY binary(name)";

Костыль конечно.. И сортирует различая большие и маленькие буквы. Но таки лучше так чем никак. Ищу лучшее решение.