Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 Поиск по полю с типом text  [new]
Safer54rus
Member

Откуда:
Сообщений: 8
Доброго времени суток! Возникла такая проблема:есть некая база в которой надо осуществить поиск (вроде не сложно), но загвоздка в том что надо искать данные в поле с типом "text".
Само это поле называется DATA_STR и имеет такую структуру:
+
автор
****
УФССП=50201001897301
Имя=ДМИТРИЙ
Фамилия=КРЮКОВ
Отчество=СЕРГЕЕВИЧ
Код лица=1
Марка, модель (модификация)=ВАЗ21093
Государственный регистрационный знак=Р869РТ54
Наименование населенного пункта=КАРГАТ
Наименование улицы=ШЕВЧЕНКО
Дом=72
Корпус=
Квартира=
Наименование типа ТС=22
Идентификационный номер (VIN)=ХТА210930Y2669572
Марка, модель (модификация)=ВАЗ21093
Категория ТС=B
Год выпуска=1999
Номер двигателя=2786307
Модель двигателя=21083
Номер шасси (рамы)=ОТСУТСТВУЕТ
Номер кузова (прицепа)=ХТА210930Y2669572
Код цветовой группы цвета кузова (кабины)=0
Серия, номер паспорта ТС=54МС069224
Дата выдачи паспорта ТС=03.04.2008
Кем выдан ПТС=РЭО СОВЕТСКОГО РОВД
Код регистрационного документа=60
Серия, номер регистрационного документа=54ТР457827
Дата выдачи регистрационного документа=23.10.2010
Код формы собственности=40
Код документа, подтверждающего право собственности=10
Серия, номер документа, подтверждающего право собственности=54НО793398
Дата выдачи документа, подтверждающего право собственности=05.10.2010
Кем выдан документ, подтверждающий право собственности=ООО ОДРИ
Код документа, удостоверяющего личность=5
Дата выдачи документа, удостоверяющего личность=14.07.2004
Кем выдан документ, удостоверяющий личность владельца=ОВД КАРГАТСКОГО Р-НА
"Государственный регистрационный знак ""Транзит""="



****
УФССП=50201001897301
Имя=ДМИТРИЙ
Фамилия=КРЮКОВ
Отчество=СЕРГЕЕВИЧ
Код лица=1
Марка, модель (модификация)=ВАЗ21013
Государственный регистрационный знак=Е072СН54
Наименование населенного пункта=КОЛЬЦОВО
Наименование улицы=
Дом=6
Корпус=
Квартира=15
Наименование типа ТС=23
Идентификационный номер (VIN)=ХТА210130G4786615
Марка, модель (модификация)=ВАЗ21013
Категория ТС=B
Год выпуска=1986
Номер двигателя=2101*8896017
Модель двигателя=
Номер шасси (рамы)=ОТСУТСТВУЕТ
Номер кузова (прицепа)=G4786615
Код цветовой группы цвета кузова (кабины)=0
Серия, номер паспорта ТС=54ВТ964432
Дата выдачи паспорта ТС=13.04.1999
Кем выдан ПТС=
Код регистрационного документа=60
Серия, номер регистрационного документа=54ОН536223
Дата выдачи регистрационного документа=04.03.2006
Код формы собственности=40
Код документа, подтверждающего право собственности=10
Серия, номер документа, подтверждающего право собственности=54МН908339
Дата выдачи документа, подтверждающего право собственности=20.02.2006
Кем выдан документ, подтверждающий право собственности=ООООДРИ
Код документа, удостоверяющего личность=5
Дата выдачи документа, удостоверяющего личность=28.10.2005
Кем выдан документ, удостоверяющий личность владельца=8 ОВД ГУВД НСО
"Государственный регистрационный знак ""Транзит""="




****
УФССП=50201001897301
Имя=ДМИТРИЙ
Фамилия=КРЮКОВ
Отчество=СЕРГЕЕВИЧ
Код лица=1
Марка, модель (модификация)=ВАЗ21093
Государственный регистрационный знак=Р869РТ54
Наименование населенного пункта=КАРГАТ
Наименование улицы=ШЕВЧЕНКО
Дом=72
Корпус=
Квартира=
Наименование типа ТС=22
Идентификационный номер (VIN)=ХТА210930Y2669572
Марка, модель (модификация)=ВАЗ21093
Категория ТС=B
Год выпуска=1999
Номер двигателя=2786307
Модель двигателя=21083
Номер шасси (рамы)=ОТСУТСТВУЕТ
Номер кузова (прицепа)=ХТА210930Y2669572
Код цветовой группы цвета кузова (кабины)=0
Серия, номер паспорта ТС=54МС069224
Дата выдачи паспорта ТС=03.04.2008
Кем выдан ПТС=РЭО СОВЕТСКОГО РОВД
Код регистрационного документа=60
Серия, номер регистрационного документа=54ТР457827
Дата выдачи регистрационного документа=23.10.2010
Код формы собственности=40
Код документа, подтверждающего право собственности=10
Серия, номер документа, подтверждающего право собственности=54НО793398
Дата выдачи документа, подтверждающего право собственности=05.10.2010
Кем выдан документ, подтверждающий право собственности=ООО ОДРИ
Код документа, удостоверяющего личность=5
Дата выдачи документа, удостоверяющего личность=14.07.2004
Кем выдан документ, удостоверяющий личность владельца=ОВД КАРГАТСКОГО Р-НА
"Государственный регистрационный знак ""Транзит""="



****
УФССП=50201001897301
Имя=ДМИТРИЙ
Фамилия=КРЮКОВ
Отчество=СЕРГЕЕВИЧ
Код лица=1
Марка, модель (модификация)=ВАЗ21013
Государственный регистрационный знак=Е072СН54
Наименование населенного пункта=КОЛЬЦОВО
Наименование улицы=
Дом=6
Корпус=
Квартира=15
Наименование типа ТС=23
Идентификационный номер (VIN)=ХТА210130G4786615
Марка, модель (модификация)=ВАЗ21013
Категория ТС=B
Год выпуска=1986
Номер двигателя=2101*8896017
Модель двигателя=
Номер шасси (рамы)=ОТСУТСТВУЕТ
Номер кузова (прицепа)=G4786615
Код цветовой группы цвета кузова (кабины)=0
Серия, номер паспорта ТС=54ВТ964432
Дата выдачи паспорта ТС=13.04.1999
Кем выдан ПТС=
Код регистрационного документа=60
Серия, номер регистрационного документа=54ОН536223
Дата выдачи регистрационного документа=04.03.2006
Код формы собственности=40
Код документа, подтверждающего право собственности=10
Серия, номер документа, подтверждающего право собственности=54МН908339
Дата выдачи документа, подтверждающего право собственности=20.02.2006
Кем выдан документ, подтверждающий право собственности=ООООДРИ
Код документа, удостоверяющего личность=5
Дата выдачи документа, удостоверяющего личность=28.10.2005
Кем выдан документ, удостоверяющий личность владельца=8 ОВД ГУВД НСО
"Государственный регистрационный знак ""Транзит""="


****
УФССП=50201002381714
Имя=ГЕННАДИЙ
Фамилия=ВЕБЕР
Отчество=ГЕННАДЬЕВИЧ
Код лица=1
Марка, модель (модификация)=ВАЗ21060
Государственный регистрационный знак=А960СТ154
Наименование населенного пункта=МАМОНТОВОЕ С
Наименование улицы=МОЛОДЕЖНАЯ
Дом=10
Корпус=
Квартира=1
Наименование типа ТС=23
Идентификационный номер (VIN)=ХТА21060014281244
Марка, модель (модификация)=ВАЗ21060
Категория ТС=B
Год выпуска=2000
Номер двигателя=5664132
Модель двигателя=2106
Номер шасси (рамы)=ОТСУТСТВУЕТ
Номер кузова (прицепа)=ХТА21060014281244
Код цветовой группы цвета кузова (кабины)=0
Серия, номер паспорта ТС=54КУ965996
Дата выдачи паспорта ТС=29.07.2006
Кем выдан ПТС=МРЭО НОВОСИБИРСКОГО РУВД
Код регистрационного документа=60
Серия, номер регистрационного документа=54УТ765434
Дата выдачи регистрационного документа=01.03.2011
Код формы собственности=40
Код документа, подтверждающего право собственности=85
Серия, номер документа, подтверждающего право собственности=000700
Дата выдачи документа, подтверждающего право собственности=16.02.2011
Кем выдан документ, подтверждающий право собственности=ООО ФОРСАЖ
Код документа, удостоверяющего личность=5
Дата выдачи документа, удостоверяющего личность=07.07.2004
Кем выдан документ, удостоверяющий личность владельца=ОВД КАРГАТСКОГО РАЙО
"Государственный регистрационный знак ""Транзит""="

Собственно имеется два поиска:
1.Это поиск по строке "Государственный регистрационный знак" и вывода данных из других таблиц
2.Поиск по полю DEBTOR_NAME из другой таблицы и вывода, собственно, этого "Государственный регистрационный знак" и других значений
Вопрос такой, как можно организовать такой поиск на C++Builder?
Скрин базы приложен.

К сообщению приложен файл. Размер - 23Kb


Сообщение было отредактировано: 17 июн 14, 15:29
17 июн 14, 11:59    [16174654]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Glory
Member

Откуда:
Сообщений: 104760
Safer54rus
Вопрос такой, как можно организовать такой поиск на C++Builder?

Написать приложение наверное.
Об этом лучше знают в форуме по C++Builder
17 июн 14, 12:01    [16174675]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Safer54rus
Member

Откуда:
Сообщений: 8
Glory, ну это логично...но я думал, что тут хоть подскажут, я ни разу с текстовыми полями не сталкивался
17 июн 14, 12:22    [16174902]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Glory
Member

Откуда:
Сообщений: 104760
Safer54rus
я ни разу с текстовыми полями не сталкивался

А что программный код на C++Builder зависит от типа поля ?
17 июн 14, 12:24    [16174922]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Glory
Safer54rus
я ни разу с текстовыми полями не сталкивался

А что программный код на C++Builder зависит от типа поля ?


Full Text Search (полнотекстовый поиск) вам понятие знакомо? Если на уровне БД искать, то рекомендую.
17 июн 14, 12:27    [16174949]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Safer54rus
Member

Откуда:
Сообщений: 8
Glory, я просто не совсем могу понять как это организовать
17 июн 14, 12:44    [16175148]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Glory
Member

Откуда:
Сообщений: 104760
Safer54rus
я просто не совсем могу понять как это организовать

Что "это" ?
Код на C++Builder ? Или SQL запрос ?
17 июн 14, 12:47    [16175189]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Safer54rus
Member

Откуда:
Сообщений: 8
Glory, код на билдере именно в данном случае, как я уже сказал, я ни когда не сталкивался с полями такого типа
17 июн 14, 12:49    [16175212]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Glory
Member

Откуда:
Сообщений: 104760
Safer54rus
код на билдере именно в данном случае

Ну так спрашивайте в форуме по билдеру ?

Safer54rus
я ни когда не сталкивался с полями такого типа

А есть какая разница для "кода на билдере" ?
17 июн 14, 12:51    [16175231]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Safer54rus
Glory, код на билдере именно в данном случае, как я уже сказал, я ни когда не сталкивался с полями такого типа


Это устаревшая версия varchar(max). Как с varchar(max), так и с text работать. Если что-то не пойдет, сделайте CAST к varchar(max). Но учтите этот тип данных глючный, поэтому от него и отказываются.
17 июн 14, 12:52    [16175239]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
a_voronin
Safer54rus
Glory, код на билдере именно в данном случае, как я уже сказал, я ни когда не сталкивался с полями такого типа


Это устаревшая версия varchar(max). Как с varchar(max), так и с text работать. Если что-то не пойдет, сделайте CAST к varchar(max). Но учтите этот тип данных глючный, поэтому от него и отказываются.
Какой тип глючный?

С типом TEXT можно, кроме FTS, использовать LIKE и SUBSTRING.
Но поменять тип поля на VARCHAR(MAX) всё равно стоит.
17 июн 14, 12:56    [16175275]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
По-хорошему это все надо привести к одной из нормальных форм, если нужна хоть какая-то производительность запросов.
17 июн 14, 13:18    [16175463]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Safer54rus
Member

Откуда:
Сообщений: 8
тогда вот ещё вопрос, сделать выгрузку этих данных в отдельный TXT-файл и нельзя ли написать скрипт в самом SQL, чтоб этот файл разбить по полям? или придётся парсить программно?
17 июн 14, 13:27    [16175558]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Safer54rus
тогда вот ещё вопрос, сделать выгрузку этих данных в отдельный TXT-файл и нельзя ли написать скрипт в самом SQL, чтоб этот файл разбить по полям? или придётся парсить программно?

Лучше сделать разбор внешним приложением.
17 июн 14, 13:33    [16175610]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
user89
Member

Откуда:
Сообщений: 2083
Safer54rus,

можно воспользоваться классом TStringList. У него много возможностей, в т.ч. работа со строками, которые представляют собой пару Ключ=Значение   Примерно так.
Код на T-SQL
declare @t table (Data_Str text)
insert @t select 'Код лица=1
Марка, модель (модификация)=ВАЗ21093
Государственный регистрационный знак=Р869РТ54'
select cast(Data_Str as varchar(max)) [Data_Str] from @t

Код на Delphi (на С++ Builder аналогично, там вроде . меняется на ->)
var
  MyList: TStringList;
begin
  ADODataSet1.Open;
  MyList := TStringList.Create();
  try
    MyList.Text := ADODataSet1.FieldByName('Data_Str').AsString;
    ShowMessage(MyList.Values['Государственный регистрационный знак']);
  finally
    MyList.Free;
  end;
end;
17 июн 14, 14:35    [16176081]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
iap
a_voronin
пропущено...


Это устаревшая версия varchar(max). Как с varchar(max), так и с text работать. Если что-то не пойдет, сделайте CAST к varchar(max). Но учтите этот тип данных глючный, поэтому от него и отказываются.
Какой тип глючный?

С типом TEXT можно, кроме FTS, использовать LIKE и SUBSTRING.
Но поменять тип поля на VARCHAR(MAX) всё равно стоит.


TEXT и NTEXT и IMAGE типы глючные -- баги есть, которые проявляются при большом кол-ве параллельных запросов, исправляются только переходом на varchar(max), nvarchar(max), varbinary(max) . Я лично общался с Support Microsoft на эту тему
17 июн 14, 15:58    [16176806]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
TEXT и NTEXT и IMAGE типы глючные -- баги есть, которые проявляются при большом кол-ве параллельных запросов, исправляются только переходом на varchar(max), nvarchar(max), varbinary(max) . Я лично общался с Support Microsoft на эту тему

И вы сообщите нам список этих багов ?
Или он секретный ?
17 июн 14, 16:00    [16176817]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Glory
a_voronin
TEXT и NTEXT и IMAGE типы глючные -- баги есть, которые проявляются при большом кол-ве параллельных запросов, исправляются только переходом на varchar(max), nvarchar(max), varbinary(max) . Я лично общался с Support Microsoft на эту тему

И вы сообщите нам список этих багов ?
Или он секретный ?


Glory, вам не буду. Достали. Если кто-то другой попросит, расскажу. Могу лишь сказать, что я целый месяц занимался переходом на nvarchar(max), после чего глюки прекратились. Кстати microsoft, скорее всего, не офиширует эту проблему. Поэтому да баг секретный.
17 июн 14, 16:07    [16176865]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
a_voronin
Glory, вам не буду. Достали. Если кто-то другой попросит, расскажу. Могу лишь сказать, что я целый месяц занимался переходом на nvarchar(max), после чего глюки прекратились. Кстати microsoft, скорее всего, не офиширует эту проблему. Поэтому да баг секретный.
Мне расскажите, тоже интересно.
17 июн 14, 16:12    [16176921]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
Glory, вам не буду. Достали.

Что слабо ?
Или может потому, что баг - это не то, что лично вы считаете багом, а то, что _зарегистировано и описано_ как баг.

a_voronin
Кстати microsoft, скорее всего, не офиширует эту проблему.

Офигеть.
Суслик есть, но его нет.

a_voronin
Могу лишь сказать, что я целый месяц занимался переходом на nvarchar(max), после чего глюки прекратились.

Я и не сомневаюсь, что именно из-за вашего участия все глюки и прекратились.
А инициировал глюки афро-админ ?
17 июн 14, 16:15    [16176943]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Glory
a_voronin
Glory, вам не буду. Достали.

Что слабо ?
Или может потому, что баг - это не то, что лично вы считаете багом, а то, что _зарегистировано и описано_ как баг.

a_voronin
Кстати microsoft, скорее всего, не офиширует эту проблему.

Офигеть.
Суслик есть, но его нет.

a_voronin
Могу лишь сказать, что я целый месяц занимался переходом на nvarchar(max), после чего глюки прекратились.

Я и не сомневаюсь, что именно из-за вашего участия все глюки и прекратились.
А инициировал глюки афро-админ ?


Glory, если вы не знаете про преимущества NVARCHAR(MAX) над NTEXT, то дальше говорить нечего. Найдите комментарии к выпуску SQL 2005, когда его ввели, и штудируйте матчасть.
17 июн 14, 16:20    [16176985]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
a_voronin
iap
пропущено...
Какой тип глючный?

С типом TEXT можно, кроме FTS, использовать LIKE и SUBSTRING.
Но поменять тип поля на VARCHAR(MAX) всё равно стоит.


TEXT и NTEXT и IMAGE типы глючные -- баги есть, которые проявляются при большом кол-ве параллельных запросов, исправляются только переходом на varchar(max), nvarchar(max), varbinary(max) . Я лично общался с Support Microsoft на эту тему


Можете рассказать, что за баги?
17 июн 14, 16:23    [16177008]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
a_voronin
Glory, если вы не знаете про преимущества NVARCHAR(MAX) над NTEXT, то дальше говорить нечего. Найдите комментарии к выпуску SQL 2005, когда его ввели, и штудируйте матчасть.
Там написано, что "nvarchar, в отличие от ntext, тип неглючный и багов в нем точно нет"?

Сообщение было отредактировано: 17 июн 14, 16:24
17 июн 14, 16:24    [16177019]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
Glory, если вы не знаете про преимущества NVARCHAR(MAX) над NTEXT, то дальше говорить нечего.

Т.е. глюков нет, есть просто преимущества ? О которых я опять же не знаю.
И вы мне не расскажите про них. Потому что Microsoft их не афиширует, но их суппорт вам в личной беседе все рассказал. И вы лично проверили каждое преимущество.

Какой захватывающий сюжет !
17 июн 14, 16:24    [16177021]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полю с типом text  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Glory
a_voronin
Glory, если вы не знаете про преимущества NVARCHAR(MAX) над NTEXT, то дальше говорить нечего.

Т.е. глюков нет, есть просто преимущества ? О которых я опять же не знаю.
И вы мне не расскажите про них. Потому что Microsoft их не афиширует, но их суппорт вам в личной беседе все рассказал. И вы лично проверили каждое преимущество.

Какой захватывающий сюжет !


Чего вы хотите, чтобы я вам написал скрипт, который воспроизводит проблему. Я его послал в Microsoft, они, как ни странно, согласились. Но он у меня не сохранился. Дело было 6-7 лет назад. Проблема в том, как храниться NTEXT и TEXT. Когда транзакция затрагивает его, то она захватывает ссылку на непосредственный BLOB, но не сам BLOB. В результате может возникнуть такая ситуация, что одна транзакция может начать читать BLOB, который друга транзакция уже удалила. И уровни изоляции не помогают.

Если хотите воспроизвести сделайте следующее. Заведите таблицу с полями ID и NTEXT. Запустите три запроса. Один пусть вставляет пор одной записи в таблицу. Другая пусть удаляет по одной записи по ID. Третий пусть обновляет по одно записи. В цикле без перерыва. Естественно так, чтобы запросы время от времени хватали одну и ту же запись. Запустите три запроса параллельно. Через несколько минут на SQL 2005 и SQL 2000 какой-нибудь из них упадёт. Не знаю про то, что будет на 2008 или 2012, но подозреваю, что они не пытались исправлять эту проблему. В 2014 они заявили, что откажутся от этих типов.
17 июн 14, 16:33    [16177095]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить