Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / из INT достать TINYINT / 8 сообщений из 8, страница 1 из 1
12.04.2015, 01:29:13
    #38934020
S_Layer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
есть некая таблица, в ней одно из полей типа INT (или SMALLINT, или даже BIGINT).
предположим одно из значений равно 1000 (в двоичном это 1111101000).
надо получить в ответе значение первых восьми бит, тоесть 11101000, тоесть 232. и вторых восьми бит, тоесть 11, тоесть 3.
чтото типа
Код: sql
1.
SELECT TINYINT(mycol) FROM ...

или
Код: sql
1.
SELECT mycol AS TINYINT FROM ...

или
Код: sql
1.
SELECT CONVERT_TO_TINYINT(mycol) FROM ...


или только сдвиги побитные использовать?
...
Рейтинг: 0 / 0
12.04.2015, 01:51:00
    #38934022
S_Layer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
а вот такая хрень мне поможет?
Код: sql
1.
2.
3.
4.
CREATE FUNCTION mytiny(n bigint) RETURNS tinyint
BEGIN
    return n;
END


и, простите измученного нарзаном, куда такие функции (кроме ж**ы) засовывают?))))) ранее не сталкивался с ними
...
Рейтинг: 0 / 0
12.04.2015, 02:07:24
    #38934024
S_Layer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
куда их сувать - разобрался.
только эта функция выдает результат 255 все время, тобишь максимум((
...
Рейтинг: 0 / 0
12.04.2015, 13:41:22
    #38934107
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
S_Layerтолько эта функция выдает результат 255 все время, тобишь максимум((ну а что она должна возвращать, если ей на вход дают значение больше максимума? Тут вариантов ровно 2 - или нулл, или максимум. Ну или ошибку ещё можно возвращать.
S_Layerнадо получить в ответе значение первых восьми бит, тоесть 11101000, тоесть 232. и вторых восьми бит, тоесть 11, тоесть 3.а поделить нацело на 256 - не? а остаток от этого же деления взять - тоже не?
...
Рейтинг: 0 / 0
13.04.2015, 15:41:20
    #38935009
S_Layer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
Код: sql
1.
2.
3.
4.
CREATE FUNCTION mytiny(n bigint) RETURNS tinyint
BEGIN
    return n & 255;
END


вот решение. в функцию передаем сдвиг, а оттуда получаем лишь 8 бит.
всем спасибо
...
Рейтинг: 0 / 0
14.04.2015, 09:41:57
    #38935550
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
S_Layer,

А перемножить битово с масками, выделяющими старший и младший байты - "в лом" или это уже "сакральные знания" (битовые операции)? :)
...
Рейтинг: 0 / 0
14.04.2015, 11:19:12
    #38935695
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
Arhat109,

в предыдущем посте ТС вроде так и делает...
...
Рейтинг: 0 / 0
14.04.2015, 12:56:30
    #38935809
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из INT достать TINYINT
tanglir,

не увидел, поскольку не читал до конца... :)

Ну и смысл делать функцию ради тупого умножения? Так можно каждую операцию по функциям поразогнать... толку то.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / из INT достать TINYINT / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]