2014-10-10 45 views
0

我需要將一個井號(#)添加到SQL表中的字符串中。在SQL Server 2008的列中添加一個#

我有一個創建表的存儲過程。一旦創建了該表,我需要更新字段以在現有字符串之前添加E#。

我已經試過這樣:

DECLARE @intro VARCHAR = 'E[#]' 
UPDATE [regKioskdb].[dbo].[MOBapptTest] 
SET emrID =(@intro + emrID) 

這增加了現有的字符串之前的E,而不是#。有沒有另一種方法來做到這一點?

我們正在使用此表格來查看某人何時掃描卡片。該卡的格式爲E#HubLive0000000。我們嘗試使用javascript從輸入中刪除E#,但掃描時沒有任何運氣。

情景:用戶在信息亭的網頁上掃描卡片。網頁查詢數據庫 - 從卡片掃描中查找數字。如果找到該號碼,它會在網頁上返回一條消息。由於我沒有在我創建的表中添加E#,所以即使賬號在數據庫中(沒有E#),每次掃描都會顯示爲「未找到」。

在此先感謝。

+1

[不要說'VARCHAR'並指定大小,像'VARCHAR(32)'](HTTP:// sqlblog .COM /博客/ aaron_bertrand /存檔/ 2009/10/09 /壞習慣,對開球聲明,VARCHAR,而無需-length.aspx)。調試101:'PRINT @intro;'會在嘗試更新表之前斷定該值已被截斷... – 2014-10-10 16:48:41

+0

確實。 ''varchar' for'「E [#]」'只是'E',因爲它實際上是varchar(1)。你應該把它當作答案@Aaron,因爲這是真正的原因。 – 2014-10-10 17:13:54

+0

感謝提示傢伙。我正在接受火災情況下的審判,並且隨時瞭解情況。 – user1623347 2014-10-10 20:16:30

回答

0

嘗試......

UPDATE [regKioskdb].[dbo].[MOBapptTest] 
SET emrID = 'E' + CHAR(35) + emrId 

(顯然第一次測試)

+1

如果'E#'來自可能由最終用戶提交的變量或參數,則這並不起作用。它還假設角色本身就是問題,但這根本不是問題。 – 2014-10-10 16:52:12

+0

你確定它甚至以適當的形式將它存儲到存儲過程中嗎?你做了像SELECT @ intro這樣的東西嗎? – Ruslan 2014-10-10 16:54:23

+0

CHAR(35)完美運作。我應該清楚,在存儲過程中,我從數據庫的另一個表中提取帳號。來自卡片掃描儀/網站的輸入僅用於將掃描卡的人與其在數據庫中的賬戶相匹配。 – user1623347 2014-10-10 17:08:10