Действительно ли это - надлежащий способ сделать булев тест в SQL?

Вы можете использовать PIL вместе с веб-цветами для получения статистики цвета изображения:

import webcolors
from PIL import Image
from collections import Counter

def get_colour_name(requested_colour):
    try:
        return webcolors.rgb_to_name(requested_colour)
    except ValueError:
        min_colours = {}
        for key, name_ in webcolors.css3_hex_to_names.items():
            r_c, g_c, b_c = webcolors.hex_to_rgb(key)
            rd = (r_c - requested_colour[0]) ** 2
            gd = (g_c - requested_colour[1]) ** 2
            bd = (b_c - requested_colour[2]) ** 2
            min_colours[(rd + gd + bd)] = name_
        return min_colours[min(min_colours.keys())]

image = Image.open('image.jpg')
pixels = image.load()
w, h = image.size
colors = []
for x in range(w):
    for y in range(h):
        colors.append(get_colour_name(pixels[x, y]))

for i, c in enumerate(Counter(colors).most_common(5)):
    print('{}. {:15} {:>2.1f}%'.format(i+1, c[0], c[1] * 100 / len(colors)))

Например, для следующего изображения:

enter image description here

5 самых распространенных цветов:

1. crimson         10.3%
2. maroon          9.8%
3. darkslategrey   9.2%
4. dimgrey         8.4%
5. grey            8.1%

69
задан Tomalak 13 May 2009 в 19:43
поделиться

6 ответов

Логическое значение в SQL - это битовое поле. Это означает либо 1, либо 0. Правильный синтаксис:

select * from users where active = 1 /* All Active Users */

или

select * from users where active = 0 /* All Inactive Users */
77
ответ дан 24 November 2019 в 13:51
поделиться

MS SQL 2008 также может использовать строковую версию true или false ...

select * from users where active = 'true'
-- or --
select * from users where active = 'false'
11
ответ дан 24 November 2019 в 13:51
поделиться

В Postgres вы можете использовать

select * from users where active

или

select * from users where active = 't'

. Если вы хотите использовать целочисленное значение, вы должны рассматривать его как строку. Вы не можете использовать целочисленное значение.

select * from users where active = 1   -- Does not work

select * from users where active = '1' -- Works 
19
ответ дан 24 November 2019 в 13:51
поделиться

В SQL Server вы обычно используете. Я не знаю о других механизмах баз данных.

select * from users where active = 0
10
ответ дан 24 November 2019 в 13:51
поделиться

PostgreSQL поддерживает логические типы, поэтому ваш SQL-запрос будет отлично работать в PostgreSQL.

0
ответ дан 24 November 2019 в 13:51
поделиться

Я лично предпочитаю использовать char (1) со значениями 'Y' и 'N' для баз данных, которые не нет собственного типа для логического. Буквы более удобны для пользователей, чем числа, которые предполагают, что те, кто их читает, теперь будут, что 1 соответствует истине, а 0 соответствует ложному.

'Y' и 'N' также хорошо отображаются при использовании (N) Hibernate.

3
ответ дан 24 November 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: