Проблема GROUP BY с varchar - PullRequest
0 голосов
/ 22 июля 2010

В БД хранятся ссылки в виде varchars.С этими ссылками я хочу использовать GROUP BY.

http://example.com
http://example.com
http://example.com

SQL для этих данных:

SELECT COUNT(*) c, Url
    FROM Advertisements
    GROUP BY Url

Я хочу этот вывод:

c Url 
3 http://example.com

Но вместополучите это три раза:

c Url 
1 http://example.com

Почему SELECT не группирует поля varchar?Они одинаковы, но GROUP BY не обнаруживает это.Есть идеи?

Ответы [ 3 ]

3 голосов
/ 22 июля 2010

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

2 голосов
/ 22 июля 2010

Окончания разные

7 i18704

5 i18704

4 I18704

После вашего комментария я обновился, и они ГРУППА, как и ожидалось.Что вы получите, когда попробуете это?

CREATE TABLE #Advertisements
(
ID INT IDENTITY(1,1),
Url VARCHAR(200)
)

INSERT INTO #Advertisements VALUES
('http://example.com')

INSERT INTO #Advertisements VALUES
('http://example.com')

INSERT INTO #Advertisements VALUES
('http://example.com')



SELECT COUNT(*) c, Url
    FROM #Advertisements
    GROUP BY Url
1 голос
/ 22 июля 2010

Точно так же, как сказали HLGEM и Мартин, весь текст в поле должен быть одинаковым, чтобы работал GROUP BY, вы можете использовать что-то вроде GROUP BY SUBSTRING (Url, 0, 30), так вы получите :

URL | COUNT

http://example.com | 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...