Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
Добрый день.
Переносил таблицу все ок, но теперь к примеру в колонке UserID в логине пользователя добавились какие то лишние символы, пример:
user222□□□□□□
вот такие вот квадратики в конце каждого UserID.
Как их можно убрать разом?
Спасибо.
22 июн 09, 14:06    [7328309]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
replace?

для спящего время бодрствования равносильно сну
22 июн 09, 14:10    [7328337]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
а что на что replace делать?
там просто разное кол-во тех "квадратиков" в каждом логине, у кого 5, а у кого 7-8.
22 июн 09, 14:32    [7328512]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33340
Блог
Ну так с помощью строковых функций можно выяснить ascii код квадратика, и затем replace.
В принципе, можно попробовать и квадратик заменить непоследственно, с помощью ctrl+c, ctrl+v
22 июн 09, 14:42    [7328622]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
CREATE TABLE таблицы покажите, пожалуйста
22 июн 09, 14:53    [7328701]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
USE [BILLING]
GO
/****** Object:  Table [dbo].[tbl_user]    Script Date: 06/22/2009 12:59:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tbl_user](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[UserID] [varchar](20) NOT NULL,
	[Cash] [float] NOT NULL CONSTRAINT [DF_tbl_user_Cash]  DEFAULT ((0)),
 CONSTRAINT [PK_tbl_user] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

Можно конечно ctrl+c, ctrl+v, но там 7000 аккаунтов, и это очень долго будет.
Мне бы запросик в базу какой то, что бы все исправил, если возможно такое.
спасибо.
22 июн 09, 15:01    [7328765]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
VALSHA
Переносил таблицу все ок
Откуда переносил? Как переносил?
В исходной таблице это был юникод?
Можно ли перечислить допустимые символы?
22 июн 09, 15:14    [7328881]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31170
VALSHA
а что на что replace делать?
там просто разное кол-во тех "квадратиков" в каждом логине, у кого 5, а у кого 7-8.
На пустую строку
22 июн 09, 15:15    [7328900]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33340
Блог
VALSHA

Можно конечно ctrl+c, ctrl+v, но там 7000 аккаунтов, и это очень долго будет.
Мне бы запросик в базу какой то, что бы все исправил, если возможно такое.
спасибо.


update таблица
  set поле = replace(поле, <ctrl+c, ctrl+v ваш квадратик>,'')
или
update таблица
  set поле = replace(поле, char(<ascii-код вашего квадратика>),'')
22 июн 09, 15:45    [7329111]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
Когда я перехожу на строку с логином типа user222□□□□□□, то он становится просто user222, то есть эти квадратики скопировать я не могу. При выделении логина они пропадают.
22 июн 09, 15:53    [7329194]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33340
Блог
см функция ASCII
22 июн 09, 15:57    [7329232]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
Критик
см функция ASCII

то есть вы предлагаете использовать
update таблица
  set поле = replace(поле, char(<ascii-код вашего квадратика>),'')
?
А подскажите, как узнать код этих квадратиков?
Спасибо.
22 июн 09, 16:25    [7329485]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
select ascii(right(UserID, 1)) from [tbl_user] where UserID like 'user222%'

для спящего время бодрствования равносильно сну
22 июн 09, 16:27    [7329505]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Попробуйте вот так:
DECLARE @I INT;
SET @I=0;
WHILE @I<32
BEGIN
 UPDATE [dbo].[tbl_user]
 SET [UserID]=REPLACE([UserID] COLLATE Cyrillic_General_BIN, CHAR(@I),'')
 WHERE [UserID] LIKE '%'+CHAR(@I)+'%' COLLATE Cyrillic_General_BIN;
 SET @I=@I+1;
END;
Но осторожно!
22 июн 09, 16:36    [7329584]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
Алексей2003
select ascii(right(UserID, 1)) from [tbl_user] where UserID like 'user222%'

для спящего время бодрствования равносильно сну

спасибо.
Получил значения 49 и 52. Это к тому что "там просто разное кол-во тех "квадратиков" в каждом логине, у кого 5, а у кого 7-8."
Теперь выполняем запрос:
update tbl_user
set UserID = replace(UserID, char(49),'')
и
update tbl_user
set UserID = replace(UserID, char(52),'')
Все верно?
22 июн 09, 16:43    [7329644]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2iap
посмеялся... "но осторожно"
F5 - попробовать. а потом опс...

для спящего время бодрствования равносильно сну
22 июн 09, 16:51    [7329706]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1141
Алексей2003
2iap
посмеялся... "но осторожно"
F5 - попробовать. а потом опс...

для спящего время бодрствования равносильно сну

22 июн 09, 16:52    [7329713]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
VALSHA
Алексей2003
select ascii(right(UserID, 1)) from [tbl_user] where UserID like 'user222%'

для спящего время бодрствования равносильно сну

спасибо.
Получил значения 49 и 52. Это к тому что "там просто разное кол-во тех "квадратиков" в каждом логине, у кого 5, а у кого 7-8."
Теперь выполняем запрос:
update tbl_user
set UserID = replace(UserID, char(49),'')
и
update tbl_user
set UserID = replace(UserID, char(52),'')
Все верно?
И что же криминального в символах CHAR(49)='1' и CHAR(52)='4' ??
22 июн 09, 16:58    [7329750]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2VALSHA
да. потом если опять будут квадратики, еще раз посмотреть код символов. и так пока у 7 тыс будет все норм.
а вообще patindex на строку [0-1а-яa-z]

для спящего время бодрствования равносильно сну
22 июн 09, 16:59    [7329757]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Алексей2003
2iap
посмеялся... "но осторожно"
F5 - попробовать. а потом опс...

для спящего время бодрствования равносильно сну
:-))
UPDATE - дело тонкое!
Я бы для начала получил копию таблицы (SELECT * INTO ... FROM ...),
и проверил скрипт на ней.
22 июн 09, 17:01    [7329764]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2iap
с одной стороны в коллейте дело. с другой интересно откуда там 2ка появилась.. тоже должна была квадратиками покрыться...

для спящего время бодрствования равносильно сну
22 июн 09, 17:02    [7329772]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2iap
ну дык так и пишите, как оно "осторожно" бывает у бывалых людей

ЗЫ сорри за оффтоп, не удержался.

для спящего время бодрствования равносильно сну
22 июн 09, 17:03    [7329781]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
iap
Попробуйте вот так:
DECLARE @I INT;
SET @I=0;
WHILE @I<32
BEGIN
 UPDATE [dbo].[tbl_user]
 SET [UserID]=REPLACE([UserID] COLLATE Cyrillic_General_BIN, CHAR(@I),'')
 WHERE [UserID] LIKE '%'+CHAR(@I)+'%' COLLATE Cyrillic_General_BIN;
 SET @I=@I+1;
END;
Но осторожно!

Выполнил запрос, получил отчет :
(7382 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)

(0 row(s) affected)
Но квадратики не пропали.

Так же выполнил эти запросы:
update tbl_user
set UserID = replace(UserID, char(49),'')
и
update tbl_user
set UserID = replace(UserID, char(52),'')
В отчете пишет:
(14857 row(s) affected)
Но так же не пропали квадратики. Хотя выполнял запросы еще пару аз что бы узнать другие ASCII коды этих квадратиков.

Еще такой момент.
База раньше была Collation:Latin1_General_CI_AS а сейчас SQL_Latin1_General_CP1_CI_AS
22 июн 09, 17:30    [7329982]     Ответить | Цитировать Сообщить модератору
 Re: символы лишние  [new]
VALSHA
Member

Откуда:
Сообщений: 41
Извините, все отлично. Запрос:
DECLARE @I INT;
SET @I=0;
WHILE @I<32
BEGIN
 UPDATE [dbo].[tbl_user]
 SET [UserID]=REPLACE([UserID] COLLATE Cyrillic_General_BIN, CHAR(@I),'')
 WHERE [UserID] LIKE '%'+CHAR(@I)+'%' COLLATE Cyrillic_General_BIN;
 SET @I=@I+1;
END;
Сработал. Спасибо большое за помощь. Уже не первый раз sql.ru выручает :)
22 июн 09, 18:09    [7330202]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить