Как преобразовать std

Основные арифметические операторы SQL

Для этого случая СУБД предоставляют дополнительные функции.

функции Oracle

  • to_char(date ]) — дату в строку;
  • to_char(number ]) — число в строку;
  • to_date(string]) — строку в дату;
  • to_number( string ]) — строку в число;
  • to_timestamp(string, format) — строку во время.

В этих функциях format описание формата даты или числа, а nlsparams — национальные параметры. Формат строки для даты задается следующими элементами:

  • «» — вставляет указанный в ковычках текст;
  • AD, A.D. — вставляет AD с точками или без точек;
  • ВС, B.C. — вставляет ВС с точками или без точек;
  • СС, SCC — вставляет век, SCC возвращает даты ВС как отрицательные числа;
  • D — вставляет день недели;
  • DAY — вставляет имя дня, дополненное пробелами до длины в девять символов;
  • DD — вставляет день месяца;
  • DDD — вставляет день года;
  • DY1 — вставляет сокращенное название дня;
  • FF2 — вставляет доли секунд вне зависимости от системы счисления;
  • НН, НН12 — вставляет час дня (от 1 до 12);
  • НН24 — вставляет час дня (от 0 до 23);
  • MI — вставляет минуты;
  • MM — вставляет номер месяца;
  • MOMn — вставляет сокращенное название месяца;
  • MONTHn — вставляет название месяца, дополненное пробелами до девяти символов;
  • RM — вставляет месяц римскими цифрами;
  • RR — вставляет две последние цифры года;
  • RRRR — вставляет весь год;
  • SS — вставляет секунды;
  • SSSSS — вставляет число секунд с полуночи;
  • WW — вставляет номер недели года (неделя — 7 дней от первого числа, а не от понедельника до воскресенья);
  • W — вставляет номер недели месяца;
  • Y.YYY — вставляет год с запятой в указанной позиции;
  • YEAR, SYEAR — вставляет год, SYEAR возвращает даты ВС как отрицательные числа;
  • YYYY, SYYYY — вставляет год из четырех цифр, SYYYY возвращает даты ВС как отрицательные числа;
  • YYY, YY, Y — вставляет соответствующее число последних цифр года.

Формат числовой строки задается следующими элементами:

  • $ — вставляет знак доллара перед числом;
  • В — вставляет пробелы для целой части десятичного числа, если она равна нулю;
  • MI — вставляет знак минус в конце (например, ‘999.999mi’);
  • S — вставляет знак числа в начале или в конце (например,’s9999′ или ‘9999s’);
  • PR — записывает отрицательное число в уголвых скобках (например,’999.999pr’);
  • D — вставляет разделитель десятичной точки в указанной позиции (например, ‘999D999’);
  • G — вставляет групповой разделитель в указанной позиции (например,’9G999G999′). При этом дробная часть числа отбрасывается;
  • С — вставляет ISO идентификатор валюты в начале или в конце числа (например, ‘с9999’ или ‘9999с’);
  • L — вставляет локальный символ валюты в в начале или в конце числа (например, ‘l9999’ или ‘9999l’);
  • , — вставляет запятую в указанной позиции вне зависимости от группового разделителя;
  • . — вставляет десятичную точку в указанной позиции вне зависимости от разделителя десятичной точки;
  • V — возвращает значение, умноженное на 10^n, где n равно числу девяток после V. В случае необходимости это значение округляется;
  • ЕЕЕЕ — 9.99ЕЕЕЕ возвращает значение в экспоненциальной форме записи;
  • RM — RM значение будет записано римскими цифрами в верхнем регистре;
  • rm — rm значение будет записано римскими цифрами в нижнем регистре;
  • — вставляет нули, вместо пробелов в начале строки или в конце, например, 9990 вставляет нули, вместо пробелов в конце строки;
  • 9 — каждая 9 определяет значащую цифру.

функции PostgreSQL

  • to_char(timestamp, format) — время в строку;
  • to_char(interval, format) — интервал времени в строку;
  • to_char(number, format) — число в строку;
  • to_date(str, format) — строку в дату;
  • to_number(str, format) — строку в число;
  • to_timestamp(str, format) — строку во время.

Основные элементы форматирования совпадают с Oracle.

функции MySQL

  • date_format(date,format) — дату в строку;
  • time_format(time,format) — время в строку;
  • format(number,precision) — число в cтроку типа ‘#,###,###.##’, где число знаков определяется вторым аргументом.

Ниже приведен список основных элементов форматирования для даты и времени:

Преобразование в кортежи и списки

Чтобы преобразовать данные в кортеж или список, используйте методы tuple() и list() соответственно. В Python:

  • Список – это изменяемая упорядоченная последовательность элементов, взятая в квадратные скобки ().
  • Кортеж – неизменяемая упорядоченная последовательность элементов, взятая в круглые скобки.

Преобразование списка в кортеж

Преобразовывая список в кортеж, вы можете оптимизировать программу. Для преобразования в кортеж используется метод tuple().

Выведенные на экран данные являются кортежем, а не списком, поскольку они взяты в круглые скобки.

Попробуйте использовать tuple() с переменной:

В кортеж можно преобразовать любой итерируемый тип, включая строки:

Конвертируя в кортеж числовой тип данных, вы получите ошибку:

Преобразование в списки

Вы можете преобразовать кортеж в список, чтобы сделать его изменяемым.

Обратите внимание: при этом в методах list() и print() используется две пары круглых скобок. Одни принадлежать собственно методу, а другие – кортежу

Если данные, которые вывел метод print, заключены в квадратные скобки, значит, кортеж преобразовался в список.

Чтобы избежать путаницы с круглыми скобками, можно создать переменную:

Строки тоже можно преобразовывать в списки:

ParseParse

Ниже приведен пример использования метода DateTime.Parse для преобразования в DateTime.The following example illustrates the use of the DateTime.Parse method to convert a into a DateTime. В этом примере используются язык и региональные параметры, связанные с текущим потоком.This example uses the culture associated with the current thread. Если класс CultureInfo, связанный с текущим значением языка и региональных параметров, не может выполнить синтаксический анализ исходной строки, создается исключение FormatException.If the CultureInfo associated with the current culture cannot parse the input string, a FormatException is thrown.

Совет

Все примеры C# в этой статье выполняются в браузере.All the C# samples in this article run in your browser. Нажмите кнопку Выполнить, чтобы просмотреть выходные данные.Press the Run button to see the output. Вы можете поэкспериментировать, изменяя их значения.You can also edit them to experiment yourself.

Примечание

Эти примеры для C# и Visual Basic см. в репозитории с документацией GitHub.These examples are available in the GitHub docs repo for both C# and Visual Basic.

Кроме того, вы можете явно определить язык и региональные параметры, соглашения о форматировании для которых используются при анализе строки.You can also explicitly define the culture whose formatting conventions are used when you parse a string. Укажите один из стандартных объектов DateTimeFormatInfo, возвращенных свойством CultureInfo.DateTimeFormat.You specify one of the standard DateTimeFormatInfo objects returned by the CultureInfo.DateTimeFormat property. В приведенном ниже примере поставщик формата используется для анализа строки на немецком языке в DateTime.The following example uses a format provider to parse a German string into a DateTime. Для представления языка и региональных параметров создается CultureInfo.It creates a CultureInfo representing the culture. Этот объект обеспечивает успешный анализ определенной строки.That object ensures successful parsing of this particular string. Это устраняет необходимость задания каких-либо параметров в потока .This precludes whatever setting is in the of the .

Для указания поставщиков пользовательских форматов можно использовать перегрузки метода Parse. Но такой метод не поддерживает анализ нестандартных форматов.However, although you can use overloads of the Parse method to specify custom format providers, the method does not support parsing non-standard formats. Вместо этого используйте метод ParseExact для анализа даты и времени, выраженных в нестандартном формате.To parse a date and time expressed in a non-standard format, use the ParseExact method instead.

В приведенном ниже примере перечисление DateTimeStyles указывает, что текущие значения даты и времени не нужно добавлять в DateTime для неуказанных полей.The following example uses the DateTimeStyles enumeration to specify that the current date and time information should not be added to the DateTime for unspecified fields.

Основные операторы языка SQL.

SQL (Structured Query Language — «язык структурированных запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. Язык SQL основывается на реляционной алгебре и представляет собой совокупность операторов.

Существует 4 группы операторов. Рассмотрим группу операторов манипуляции данными (Data Manipulation Language, DML, SQL DML)

Выбор данных

Выбор данных представляет собой наиболее часто встречающуюся операцию, выполняемую с помощью SQL. Оператор SELECT — один из самых важных операторов этого языка, применяемый для выбора данных. Синтаксис этого оператора имеет следующий вид:

SELECT column FROM table

Операторы SELECT должны содержать слова SELECT и FROM; другие ключевые слова являются необязательными.

За ключевым словом SELECT следуют сведения о том, какие именно поля необходимо включить в результирующий набор данных. Звездочка (*) обозначает все поля таблицы, например:

Для выбора одной колонки применяется следующий синтаксис:

SELECT Company

Пример выбора нескольких колонок имеет вид:

SELECT Company, Phone, Mail

Для указания имен таблиц, из которых выбираются записи, применяется ключевое слово FROM, например:

SELECT * FROM Customers

Этот запрос возвратит все поля из таблицы Customers.

Для фильтрации результатов, возвращаемых оператором SELECT, можно использовать предложение WHERE (необязательное)

SELECT * FROM Products WHERE Category = 4

В предложении WHERE можно использовать различные выражения,

WHERE expression1

например:

SELECT * FROM Products WHERE Category = 2 AND Postavshik > 10

SELECT Name, Price FROM Products WHERE Category= 3 OR Price < 50

Можно использовать такие операторы:

< Меньше

<= Меньше или равно

<> Не равно

= Равно

> Больше

>= Больше или равно

Предложение ORDER BY (необязательное) применяется для сортировки результирующего набора данных по одной или нескольким колонкам.

Преобразование числовых типов

В Python существует два числовых типа данных: целые числа и числа с плавающей точкой. Для преобразования целых чисел в числа с плавающей точкой и наоборот Python предоставляет специальные встроенные методы.

Преобразование целых чисел в числа с плавающей точкой

Метод float() преобразовывает целые числа в числа с плавающей точкой. Число указывается в круглых скобках:

Это преобразует число 57 в 57.0.

Также можно использовать переменные. Объявите переменную f = 57, а затем выведите число с плавающей точкой:

Преобразование чисел с плавающей точкой в целые числа

Встроенная функция int() предназначена для преобразования чисел с плавающей точкой в целые числа.

Функция int() работает так же, как и float(). Чтобы преобразовать число, добавьте его в круглые скобки:

Число 390.8 преобразуется в 390.

Эта функция также может работать с переменными. Объявите переменные:

Затем преобразуйте и отобразите их:

Чтобы получить целое число, функция int() отбрасывает знаки после запятой, не округляя их (потому 390.8 не преобразовывается в 391).

Преобразование чисел с помощью деления

При делении Python 3 может преобразовать целое число в число с плавающей точкой (в Python 2 такой функции нет). К примеру, разделив 5 на 2, вы получите 2.5.

Python не преобразовывает тип данных во время деления; следовательно, деля целое число на целое число, в результате вы получили бы целое число, 2.

Преобразование строки в число функцией intval()

Представим, что у нас есть строка, включающая в себя один символ — «2». Вот, как будет выглядеть PHP-код преобразования этой строки в число с помощью встроенной функции intval():

$stringNumberToParse = "2";
// var_dump($stringNumberToParse); // string '2' (length=1)

// Convert the string to type int
$parsedInt = intval($stringNumberToParse);

// var_dump(is_int($parsedInt)); // boolean true
// var_dump($parsedInt); // int 2

echo $parsedInt;

На выходе получим 2, но уже в виде числа, а не строки.

Давайте пошагово разберём, что же произошло, и расшифруем каждую строчку кода:
1. Объявляется переменная, содержащая строку с символом «1».
2. У нас есть возможность задействовать функцию var_dump() для вывода на экран значения и типа переменной (в ознакомительных целях).
3. Переменная $stringNumberToParse передаётся в функцию intval() в виде аргумента (если речь идёт не о целых числах, используют floatval()).
4. Функция возвращает нам число, которое мы присваиваем с помощью переменной $parsedInt.

Остаётся добавить, что вышеописанная функция работает в PHP разных версий: 4, 5, 7+.

Преобразование строки Python в int

Метод Python позволяет преобразовать любое значение типа String в целочисленное значение.

Синтаксис:

int(string_variable)

Пример:

string_num = '75846'
print("The data type of the input variable is:\n")
print(type(string_num))

result = int(string_num)
print("The data type of the input value after conversion:\n")
print(type(result))
print("The converted variable from string to int:\n")
print(result)

Выход:

The data type of the input variable is:
<class 'str'>
The data type of the input value after conversion:
<class 'int'>
The converted variable from string to int:
75846

Python также предоставляет нам эффективный вариант преобразования чисел и значений типа String в целочисленные значения с определенной базой в соответствии с системой счисления.

Синтаксис:

int(string_value, base = val)

Пример:

string_num = '100'
print("The data type of the input variable is:\n")
print(type(string_num))

print("Considering the input string number of base 8....")
result = int(string_num, base = 8)
print("The data type of the input value after conversion:\n")
print(type(result))
print("The converted variable from string(base 8) to int:\n")
print(result) 

print("Considering the input string number of base 16....")
result = int(string_num, base = 16)
print("The data type of the input value after conversion:\n")
print(type(result))
print("The converted variable from string(base 16) to int:\n")
print(result) 

В приведенном выше фрагменте кода мы преобразовали «100» в целочисленное значение с основанием 8 и основанием 16 соответственно.

Выход:

The data type of the input variable is:

<class 'str'>
Considering the input string number of base 8....
The data type of the input value after conversion:

<class 'int'>
The converted variable from string(base 8) to int:

64
Considering the input string number of base 16....
The data type of the input value after conversion:

<class 'int'>
The converted variable from string(base 16) to int:

256

Через DecimalFormat

DecimalFormat — это конкретный подкласс класса NumberFormat, который форматирует десятичные числа. Он имеет множество функций, предназначенных для анализа и форматирования чисел. Вы можете использовать его для форматирования числа в строковое представление по определенному шаблону.

Пример

import java.text.DecimalFormat;
public class Method4
{
	 public static void main(String[] args) 
	 {
	      int number = 12345;
	      DecimalFormat numberFormat = new DecimalFormat("##,###");
	      String str = numberFormat.format(12345);	      
          System.out.println("The number to be converted is: " + number);
	      System.out.println("The string version of 12345 is: " + str);
	 }
	 
}

Вывод

The number to be converted is: 12345
The string version of 12345 is: 12,345

Если вы знаете, как использовать метод DecimalFormat, это лучший вариант для преобразования Integer в String из-за уровня контроля, который можете иметь при форматировании. Можете указать количество знаков после запятой и разделитель запятых для лучшей читаемости, как показано в примере выше.

Преобразование в число в JavaScript

Преобразование в число (численное преобразование) осуществляется в математических функциях и выражениях. Допустим, когда операция деления (/) применяется не к числу:

alert( "6"  "2" ); // 3, Строки преобразовываются в числа

Кроме того, можно задействовать функцию Number(value) — это позволит явно преобразовать value к числу:

let str = "123";
alert(typeof str); // string

let num = Number(str); // станет числом 123

alert(typeof num); // number

Также применяется явноe преобразование в число. Это актуально, если мы ожидаем получить, допустим, число из строкового контекста (к примеру, из текстовых полей форм).

Когда строка не может быть приведена к числу явно, результатом преобразования станет NaN:

let age = Number("Любая строка вместо числа");

alert(age); // NaN, преобразование  не получилось

Существуют правила преобразования в число:

А теперь приведём примеры:

alert( Number("   123   ") ); // 123
alert( Number("123z") );      // NaN (ошибка чтения числа в "z")
alert( Number(true) );        // 1
alert( Number(false) );       // 0

Обратите внимание, что undefined и null и ведут себя по-разному. Если null становится нулём, то undefined приводится к NaN

Кроме того, нужно учесть, что сложение (+) объединяет строки. Как известно, практически все математические операторы выполняют преобразование в число. Исключением является +. Если одно из слагаемых будет строкой, все остальные тоже приведутся к строкам.

Речь идёт о конкатенации (присоединении) друг к другу:

alert( 1 + '2' ); // '12' (строка справа)
alert( '1' + 2 ); // '12' (строка слева)

Такое происходит, когда хотя бы один из аргументов — это строка. В остальных случаях значения складываются, как числа.

строка в числовой

Каждый из них берет строку как ввод и пытается преобразовать ее в число. Если допустимый номер не может быть сконструирован, например, потому что нет числовых данных или число выходит за пределы диапазона для этого типа, генерируется исключение ( или ).

Если преобразование выполнено успешно, а не , будет содержать индекс первого символа, который не использовался для декодирования. Это может быть индекс за последним символом.

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

Наконец, для каждой функции есть также перегрузка, которая принимает как первый параметр.

Вступление

Когда вы хотите изменить один тип данных на другой, более крупный (по размеру/диапазону), то неявное преобразование является хорошим вариантом.

Но многие начинающие программисты часто пытаются сделать что-то вроде следующего: . Однако, поскольку и являются целыми числами, никакого числового расширения не происходит. Выполняется целочисленное деление , результатом которого будет значение , которое затем неявно преобразуется в и присвоится переменной !

В случае, когда вы используете (такие как или ), замена одного или обоих целочисленных литералов значением типа с плавающей точкой ( или ) приведет к конвертации обоих операндов в значения типа с плавающей точкой и выполнится деление типа с плавающей точкой.

Но что будет, если использовать переменные? Например:

int i1 = 11;
int i2 = 3;
float x = i1 / i2;

1
2
3

inti1=11;

inti2=3;

floatx=i1i2;

Значением переменной будет . Как сообщить компилятору, что мы хотим использовать деление типа с плавающей точкой вместо целочисленного деления? Правильно! Использовать один из операторов явного преобразования типов данных, чтобы указать компилятору выполнить явное преобразование.

Оператор CASE

Пусть требуется вывести список всех моделей ПК с указанием их цены. При этом если модель отсутствует в продаже (нет в таблице РС), то вместо цены вывести текст: «Нет в наличии». Список всех моделей ПК с ценами можно получить с помощью запроса:

SELECT DISTINCT product.model, price FROM product LEFT JOIN pc c    ON product.model=c.model    WHERE product.type=’pc’;

В результирующем наборе отсутствующая цена будет заменена NULL-значением:

model price
1121 850
1232 350
1232 400
1232 600
1233 600
1233 950
1233 980
1260 350
2111 NULL
2112 NULL

Чтобы заменить NULL-значения нужным текстом, можно воспользоваться оператором CASE:

SELECT DISTINCT product.model,    CASE WHEN price IS NULL THEN ‘Нет в наличии’ ELSE CAST(price AS CHAR(20)) END price    FROM product LEFT JOIN pc c ON product.model=c.model    WHERE product.type=’pc’

Оператор CASE в зависимости от указанных условий возвращает одно из множества возможных значений. В нашем примере условием является проверка на NULL. Если это условие выполняется, то возвращается текст «Нет в наличии», в противном случае (ELSE) возвращается значение цены. Здесь есть один принципиальный момент. Поскольку результатом оператора SELECT всегда является таблица, то все значения любого столбца должны иметь один и тот же тип данных (с учетом неявного приведения типов). Поэтому мы не можем наряду с ценой (числовой тип) выводить символьную константу. Вот почему к полю price применяется преобразование типов, чтобы привести его значения к символьному представлению. В результате получим

model price
1121 850
1232 350
1232 400
1232 600
1233 600
1233 950
1233 980
1260 350
2111 Нет в наличии
2112 Нет в наличии

Оператор CASE может быть использован в одной из двух синтаксических форм записи:

1-я форма CASE <проверяемое выражение>    WHEN <сравниваемое выражение 1>    THEN <возвращаемое значение 1>    …    WHEN <сравниваемое выражение N>    THEN <возвращаемое значение N> END

2-я форма CASE    WHEN <предикат 1>    THEN <возвращаемое значение 1>    …    WHEN <предикат N>    THEN <возвращаемое значение N> END

Все предложения WHEN должны иметь одинаковую синтаксическую форму, т.е. нельзя смешивать первую и вторую формы. При использовании первой синтаксической формы условие WHEN удовлетворяется, как только значение проверяемого выражения станет равным значению выражения, указанного в предложении WHEN. При использовании второй синтаксической формы условие WHEN удовлетворяется, как только предикат принимает значение TRUE. При удовлетворении условия оператор CASE возвращает значение, указанное в соответствующем предложении THEN. Если ни одно из условий WHEN не выполнилось, то будет использовано значение, указанное в предложении ELSE. При отсутствии ELSE, будет возвращено NULL-значение. Если удовлетворены несколько условий, то будет возвращено значение предложения THEN первого из них. В приведенном выше примере была использована вторая форма оператора CASE. Заметим, что для проверки на NULL стандарт предлагает более короткую форму оператора — COALESCE. Этот оператор имеет произвольное число параметров и возвращает значение первого, отличного от NULL. Для двух параметров оператор COALESCE(A, B) эквивалентен следующему оператору CASE:

CASE WHEN A IS NOT NULL THEN A ELSE B END

Решение рассмотренного выше примера при использовании оператора COALESCE можно переписать следующим образом:

SELECT DISTINCT product.model,    COALESCE(CAST(price as CHAR(20)),’Нет в наличии’) price    FROM product LEFT JOIN pc c ON product.model=c.model    WHERE product.type=’pc’;

Использование первой синтаксической формы оператора CASE можно продемонстрировать на следующем примере: Вывести все имеющиеся модели ПК с указанием цены. Отметить самые дорогие и самые дешевые модели.

SELECT DISTINCT model, price,    CASE price WHEN (SELECT MAX(price) FROM pc) THEN ‘Самый дорогой’    WHEN (SELECT MIN(price) FROM pc) THEN ‘Самый дешевый’    ELSE ‘Средняя цена’ END comment    FROM pc ORDER BY price;

В результате выполнения запроса получим

model price comment
1232 350 Самый дешевый
1260 350 Самый дешевый
1232 400 Средняя цена
1233 400 Средняя цена
1233 600 Средняя цена
1121 850 Средняя цена
1233 950 Средняя цена
1233 980 Самый дорогой

Явные преобразованияExplicit conversions

Тем не менее если преобразование нельзя выполнить без риска потери данных, компилятор требует выполнения явного преобразования, которое называется приведением.However, if a conversion cannot be made without a risk of losing information, the compiler requires that you perform an explicit conversion, which is called a cast. Приведение — это способ явно указать компилятору, что необходимо выполнить преобразование и что вам известно, что может произойти потеря данных или приведение может завершиться сбоем во время выполнения.A cast is a way of explicitly informing the compiler that you intend to make the conversion and that you are aware that data loss might occur, or the cast may fail at runtime. Чтобы выполнить приведение, укажите тип, в который производится приведение, в круглых скобках перед преобразуемым значением или переменной.To perform a cast, specify the type that you are casting to in parentheses in front of the value or variable to be converted. В следующей программе выполняется приведение типа double в int. Программа не будет компилироваться без приведения.The following program casts a double to an int. The program will not compile without the cast.

Полный список всех поддерживаемых явных числовых преобразований см. в разделе в статье Встроенные числовые преобразования.For a complete list of supported explicit numeric conversions, see the section of the Built-in numeric conversions article.

Для ссылочных типов явное приведение является обязательным, если необходимо преобразовать базовый тип в производный тип:For reference types, an explicit cast is required if you need to convert from a base type to a derived type:

Операция приведения между ссылочными типами не меняет тип времени выполнения базового объекта; изменяется только тип значения, который используется в качестве ссылки на этот объект.A cast operation between reference types does not change the run-time type of the underlying object; it only changes the type of the value that is being used as a reference to that object. Дополнительные сведения см. в разделе Полиморфизм.For more information, see Polymorphism.

Преобразование данных

Последнее обновление: 29.07.2017

Когда мы присваиваем значение одного одного типа столбцу, который хранит данные другого типа, либо выполняем операции, которые вовлекают данные разных типов, SQL Server пытается выполнить преобразование и привести используемое значение к нужному типу. Но не все преобразования SQL Server может выполнить автоматически. SQL Server может выполнять неявные преобразования от типа с меньшим приоритетом к типу с большим приоритетом. Таблица приоритетов (чем выше, тем больший приоритет):

datetime
smalldatetime
float
real
decimal
money
smallmoney
int
smallint
tinyint
bit
nvarchar
nchar
varchar
char

То есть SQL Server автоматически может преобразовать число 100.0 (float) в дату и время (datetime).

В тех случаях, когда необходимо выполнить преобразования от типов с высшим приоритетом к типам с низшим приоритетом, то надо выполнять явное приведение типов. Для этого в T-SQL определены две функции: CONVERT и CAST.

Функция CAST преобразует выражение одного типа к другому. Она имеет следующую форму:

CAST(выражение AS тип_данных)

Для примера возьмем следующие таблицы:

CREATE TABLE Products ( Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL ); CREATE TABLE Customers ( Id INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(30) NOT NULL ); CREATE TABLE Orders ( Id INT IDENTITY PRIMARY KEY, ProductId INT NOT NULL REFERENCES Products(Id) ON DELETE CASCADE, CustomerId INT NOT NULL REFERENCES Customers(Id) ON DELETE CASCADE, CreatedAt DATE NOT NULL, ProductCount INT DEFAULT 1, Price MONEY NOT NULL );

Например, при выводе информации о заказах преобразует числовое значение и дату в строку:

SELECT Id, CAST(CreatedAt AS nvarchar) + ‘; total: ‘ + CAST(Price * ProductCount AS nvarchar) FROM Orders

C#. Форматирование строк. Преобразование числа в строку.

Доброго времени суток! В этой статье я расскажу (а скорее покажу) как в C# можно преобразовать число в строку, применяя при этом форматирование. Форматирование применяют, чтобы добиться определенных нюансов, например, ограничить количество символов после запятой в десятичной дроби и т.п.  В этой статье, я постараюсь сделать уклон исключительно на практику. И так, приступим…

Первым делом, я покажу как можно просто преобразовать число в строку. Точнее, я покажу один из нескольких способов. По сути, он заключается в вызове метода «ToString()» на целочисленной переменной. Всё элементарно, см. код ниже:

//Простейшее преобразование числа в строку
int someValue = 245; //Есть какая-то целочисленная переменная

string someStr = someValue.ToString(); //Вызываем метод ToString, получаем строку "245"

А теперь я покажу как можно преобразовывать числа, используя форматирования. Для этого, мы уже будем использовать метод «Format» класса «string». Этот метод используется для того, чтобы вставить значение объекта (или нескольких объектов) в строку (в указанное место строки). Первый параметр данного метода как раз и есть строка, внутри которой указываются места вставки значений остальных параметров метода (их может быть как несколько, так и один). Места вставки обозначаются фигурными скобками, внутри которых указывается индекс параметра (начиная с нуля), и при необходимости форматирование. Например, ниже показано, как вставляются два целых числа в строку:

Console.WriteLine(string.Format("Первое число: {0}, и сразу же второе: {1}", 56, 65));

В результате Вы увидите следующую строку: «Первое число: 56, и сразу же второе: 65«. Ниже показаны примеры преобразования чисел в строки с использованием форматирования. Опции форматирования так же указываются в фигурных скобках, после индекса параметра. Индекс параметра и опции форматирования разделяются двоеточием. См. пример ниже.

//Преобразование числа в строку (вывод двух знаков после запятой) --------------------------------------

Console.WriteLine(string.Format("{0:0.00}", 51.2456)); //Будет округление до сотых - 51.25

Console.WriteLine(string.Format("{0:0.00}", 51.2)); //Будет добавлен один 0 после запятой - 51.20



//Преобразование числа в строку (вывод не более двух знаков после запятой) -----------------------------

Console.WriteLine(string.Format("{0:0.##}", 51.2456)); //Будет выполнено округление до сотых - 51.25

Console.WriteLine(string.Format("{0:0.##}", 51.2)); //Будет выведено как есть - 51.2

Console.WriteLine(string.Format("{0:0.##}", 51.0)); //Будет отброшен 0 после запятой - 51

 

//Преобразование числа в строку (вывод не менее двух знаков перед запятой) -----------------------------

Console.WriteLine(string.Format("{0:00.##}", 551.24)); //Будет выведено как есть - 551.24

Console.WriteLine(string.Format("{0:00.##}", 51.2)); //Будет выведено как есть - 51.2

Console.WriteLine(string.Format("{0:00.##}", 5.3)); //Будет добавлен 0 перед числом запятой - 05.3



//Преобразование числа в строку (вывод нулей у десятичных дробей, значение которых меньше 1) ------------

Console.WriteLine(string.Format("{0:0.00}", 0.25)); //Будет выведено как есть - 0,25

Console.WriteLine(string.Format("{0:#.00}", 0.25)); //Будет отброшен 0 перед запятой - .20


//Преобразование числа в строку (разделение на тысячи) --------------------------------------------------

Console.WriteLine(string.Format("{0:0}",10245)); //Будет выведено как есть - 10245

Console.WriteLine(string.Format("{0:0,0}", 10245)); //Будет проведено разделение по тысячам - 10 245

//И еще кое-что...

//Вывод числа в шестнадцатеричном формате
Console.WriteLine(string.Format("{0:X}", 255)); //Будет выведено - FF

//Вывод экспоненциальные числа
Console.WriteLine(string.Format("{0:E}", 5.54)); //Будет выведено - 5.540000E+000

//Вывод процентов
Console.WriteLine(string.Format("{0:P}", 0.54)); //Будет умножено на 100 и добавлен знак % - 54.00%

Естественно я перечислил не все возможные способы форматирования и форматы, но перегружать статью уж очень узкой спецификой как-то не хочется…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector