Проблема с регулярным выражениемНе используйте.
SUBSTR
вырежьте число, определяя параметры для неё с помощью INSTR(listinfo, ';i:')
и INSTR(listinfo, ';s:6:')
.select SUBSTR( SUBSTR( 'a:27:{s:4:"List";i:6323;s:6:"Status";s:6:..}', 1,
INSTR( 'a:27:{s:4:"List";i:6323;s:6:"Status";s:6:..}', ';s:6') - 1 ),
INSTR( 'a:27:{s:4:"List";i:6323;s:6:"Status";s:6:..}', ';i:') + 3 ) from dual
DECLARE @actionsUsers TABLE ( Пользователь VARCHAR(100), Действие VARCHAR(100), ТипДействия INT )
INSERT @actionsUsers VALUES ( 'Иванов', 'Изменил дату', 1 ),
( 'Петров', 'Добавил запись', 4 ),
( 'Соколов', 'Изменил описание', 2 ),
( 'Иванов', 'Изменил дату', 1 ),
( 'Соколов', 'Изменил заголовок', 3 ),
( 'Соколов', 'Изменил заголовок', 3 )
SELECT [Пользователь],
[Добавил запись], [Изменил дату], [Изменил описание], [Изменил заголовок]
FROM
( SELECT [Пользователь], [Действие]
FROM @actionsUsers ) AS AUC
PIVOT ( COUNT([Действие]) FOR [Действие]
IN ([Добавил запись], [Изменил дату], [Изменил описание], [Изменил заголовок] )) AS PT
ORDER BY [Пользователь]
DECLARE @L VARCHAR(100) = '%Mars%'
DECLARE @TB VARCHAR(100), @CL VARCHAR(100), @Q NVARCHAR(250)
DECLARE @R TABLE ( TableField VARCHAR(100), FieldValue VARCHAR(250) )
DECLARE AllTable CURSOR FOR
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE '%char'
OPEN AllTable
FETCH NEXT FROM AllTable INTO @TB, @CL
WHILE @@FETCH_STATUS = 0 BEGIN
SET @Q = 'SELECT ''' + @TB + '.' + @CL + ''', ' + @CL
+ ' FROM ' + @TB + ' WHERE ' + @CL + ' LIKE ''' + @L + ''''
INSERT @R EXECUTE sp_executesql @Q
FETCH NEXT FROM AllTable INTO @TB, @CL
END
CLOSE AllTable
DEALLOCATE AllTable
SELECT * FROM @R