【发布时间】:2012-03-15 23:55:38
【问题描述】:
问题是 COLA 填充了 0
我正在尝试用 COLA 验证 COLB、COLC、COLD、COLE、COLF
还是我走错了路!
如何获得 COLB、COLD 以将数字 (int) 与填充数字子字符串进行比较?
示例 没错
COLB COLC COLD COLE COLF COLA
1 DD 5 1 0 should = 01DD000510
不是这些
COLB COLC COLD COLE COLF COLA
50 AA 230 2 0 0
50 AC 600 3 0
50 AG 740 2 0 50AE074020
50 AS 240 3 0 *0AS024030
-- select that does not work statement.
SELECT COLA ,
COLB ,
SUBSTRING(COLA, 1, 2) AS 'BLC_COLB' ,
COLC ,
SUBSTRING(COLA, 3, 2) AS 'BLC_COLC' ,
COLD ,
SUBSTRING(COLA, 5, 4) AS 'BLC_COLD' ,
COLE ,
SUBSTRING(COLA, 9, 1) AS 'BLC_COLE' ,
COLF ,
SUBSTRING(COLA, 10, 1) AS 'BLC_COLF'
FROM ATABLE
WHERE SUBSTRING(COLA, 1, 2) NOT LIKE COLB
OR SUBSTRING(COLA, 3, 2) NOT LIKE COLC
OR SUBSTRING(COLA, 5, 4) NOT LIKE COLD
OR SUBSTRING(COLA, 9, 1) NOT LIKE COLE
OR SUBSTRING(COLA, 10, 1) NOT LIKE COLF
--create table and data script
CREATE TABLE [dbo].[ATABLE]
(
[ROWVERSION] [bigint] NULL ,
[ROWDATE] [datetime] NULL ,
[COLB] [int] NOT NULL ,
[COLC] [nvarchar](2) NOT NULL ,
[COLD] [int] NOT NULL ,
[COLE] [nvarchar](1) NOT NULL ,
[COLF] [int] NOT NULL ,
[COLA] [nvarchar](14) NULL ,
CONSTRAINT [CON1_0] PRIMARY KEY CLUSTERED
( [COLB] ASC, [COLC] ASC, [COLD] ASC, [COLE] ASC, [COLF] ASC )
WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 70 ) ON [PRIMARY]
)
ON [PRIMARY]
GO
SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS, NOCOUNT ON
GO
SET DATEFORMAT YMD
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
BEGIN TRANSACTION
-- Add 5 rows to [dbo].[ATABLE] with non-unique comparison key
SET ROWCOUNT 1
INSERT INTO [dbo].[ATABLE]
( [COLB] ,
[COLC] ,
[COLD] ,
[COLE] ,
[COLF] ,
[ROWVERSION] ,
[ROWDATE] ,
[COLA]
)
VALUES ( 1 ,
N'DD' ,
5 ,
N'1' ,
0 ,
327520493236000002 ,
'2011-07-04 10:21:33.227' ,
N'01DD000510'
)
INSERT INTO [dbo].[ATABLE]
( [COLB] ,
[COLC] ,
[COLD] ,
[COLE] ,
[COLF] ,
[ROWVERSION] ,
[ROWDATE] ,
[COLA]
)
VALUES ( 50 ,
N'AA' ,
230 ,
N'2' ,
0 ,
327520514140000004 ,
'2011-07-28 09:47:41.013' ,
N'0'
)
INSERT INTO [dbo].[ATABLE]
( [COLB] ,
[COLC] ,
[COLD] ,
[COLE] ,
[COLF] ,
[ROWVERSION] ,
[ROWDATE] ,
[COLA]
)
VALUES ( 50 ,
N'AC' ,
600 ,
N'3' ,
0 ,
327520523360000007 ,
'2011-07-28 09:48:09.577' ,
N''
)
INSERT INTO [dbo].[ATABLE]
( [COLB] ,
[COLC] ,
[COLD] ,
[COLE] ,
[COLF] ,
[ROWVERSION] ,
[ROWDATE] ,
[COLA]
)
VALUES ( 50 ,
N'AG' ,
740 ,
N'2' ,
0 ,
327520543671000002 ,
'2011-07-28 09:47:03.773' ,
N'50AE074020'
)
INSERT INTO [dbo].[ATABLE]
( [COLB] ,
[COLC] ,
[COLD] ,
[COLE] ,
[COLF] ,
[ROWVERSION] ,
[ROWDATE] ,
[COLA]
)
VALUES ( 50 ,
N'AS' ,
240 ,
N'3' ,
0 ,
327520586618000007 ,
'2011-07-28 09:48:08.453' ,
N'*0AS024030'
)
SET ROWCOUNT 0
COMMIT TRANSACTION
【问题讨论】: