次のコードに示すように2つのテーブル(#temp1
と#temp2
)がありますが、#temp2
テーブルにある値に一致する静的IDを取得しようとしていますが、nullを返すような問題があります。staticID
value 。SQL Server 2012のreplace、substring charindexを使用してテーブルからIDを取得する方法は?
私は以下のコードで私がやっている間違ったことを誰かに教えてもらえませんか?
BEGIN
CREATE TABLE #temp2
(
staticname VARCHAR(160),
)
INSERT INTO #temp2
VALUES ('Per capita disappearance, carcass weight(456)'),
('Production(286)')
CREATE TABLE #temp1
(
idnum INTEGER IDENTITY(1, 1),
statisticname VARCHAR(256),
staticid INTEGER
)
INSERT INTO #temp1
VALUES ('Per capita disappearance, carcass weight',
'144'),
('Production',
'143')
SELECT
Ltrim (Rtrim (Replace (T2.staticname, Substring(T2.staticname,
Charindex('(', T2.staticname, 0),
Len(T2.staticname) - (Charindex('(', T2.staticname, 0) - 1)), ''
))),
T1.staticid
FROM
#temp2 T2
LEFT JOIN
#temp1 T1 ON T2.staticname = T1.statisticname
DROP TABLE #temp1
DROP TABLE #temp2
に失敗しました:これを試してみてください。 Temp2テーブルは、Temp1のような別々のフィールドに分割する必要があります。 – Chuck
あなたの参加条件では、そこに一致するものは見つかりません。全てを大文字にしないと、あなたは大きな好意を持ちます。それは読むのがとても難しいです。そして、実際には、このように複数の値を1つの列に入れるべきではありません。一緒に働くのは本当の痛みです。 –
これは、コード内で動作していない部分の単なる例です...問題は#temp2の値に名前(いくつかの番号)があります。番号の部分を削除し、一致する名前のIDを取得する必要があります....上記の問題には解決策がありますか? –