2015-09-28 228 views
-2

今天我去了我的第一次面試.Net Developer。 面試官問我一個棘手的問題,但我無法回答。 我在這個問題上想了很多,但沒有得到任何解決方案。pad /截斷字符串

問題是...

ID | Name 
1 | Ram 
2 | Prathamesh 
3 | Naresh 
4 | Dasharath 

更新此表下面的條件; 如果Name的字符少於6個字母,那麼New值必須像「Ram ***」 (*標記將被添加到字符長度爲6) 並且如果它超過6個字母,則應刪除所有多餘的字母。

結果是這樣的:

ID | Name 
1 | Ram***   /* added three * marks */ 
2 | Pratha   /* removed extra letters */ 
3 | Naresh   /* No changes */ 
4 | Dashar   /* removed extra letters */ 
+5

我能完全得到這份工作! – Hogan

+0

很高興在這裏,你可以完全得到這份工作...... 但我認爲對於「新鮮水平」,這對我來說是好的... –

+1

哪裏?聽??? – Hogan

回答

8
SELECT LEFT(NAME+'******',6) FROM TABLE 
+1

@NileshDalvi僅供參考通用方法'DECLARE @pad INT = 6; SELECT LEFT(NAME + REPLICATE('*',@ pad),@pad)' – lad2025

+0

@ lad2025 - 應該指出的是,你的「通用方法」是一個可怕的想法,這將是非常緩慢的每行復制調用。除非你只有少數(少於10000)的記錄。 – Hogan

+1

@霍根我認爲你是誇張的。調用複製應該不是那種徵稅。也可以將複製調用優化掉,因爲參數在選擇內部是常量,但複製的結果仍然應該在選擇之前移入變量。 –