2017年9月15日 星期五

T-SQL 去除 html tag

先前有練習過,使用 C# 把類似 HTML 編輯器所儲存的內容,去掉 HTML Tag,但如果不想用 C# 來寫,而是直接在 SQL Server 上用 T-SQL 就直接完成,是否有這機會呢?

有的,這已經有人寫好了。

我參考了 Pinal Dave 的文章,把它主要的關鍵語法擷取下來:

CREATE FUNCTION [dbo].[clearTag]
(
 -- Add the parameters for the function here
 @HTMLText VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
 DECLARE @Start INT
 DECLARE @End INT
 DECLARE @Length INT
 SET @Start = CHARINDEX('<',@HTMLText) SET @End = 
 CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText)) 
 SET @Length = (@End - @Start) + 1 WHILE @Start > 0
 AND @End > 0
 AND @Length > 0
 BEGIN
 SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
 SET @Start = CHARINDEX('<',@HTMLText) SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
 SET @Length = (@End - @Start) + 1
 END
 RETURN LTRIM(RTRIM(@HTMLText))

END


主要是在資料庫裡新增一個函數( function),把那些雜亂的內容當作參數傳進這個函數,回傳值則是我們想要的乾淨內容。

而使用方式,則是


select [dbo].[自訂函數名稱]('xxxx html tag')

參考資料:
01.Defined Function to Strip HTML – Parse HTML – No Regular Expression

02.去除 html tag(C# 版)

2017年9月11日 星期一

SQL Server Intellisense Not Working

如果你跟我一樣,使用 SQL Server 2008 R2 搭配 Visual Studio 2010 進行開發。當您頓 Visual Studio 2010 升級了 Service Pack 1 後,有一天發現 SQL Server 2008 R2 的 intellisense 功能不見了,雖然不是什麼大 Bug,但對開發人員來說,還真的非常不方便。

原來是我先前喜孜孜地對 Visual Studio 2010 進行 Service Pack 更新,造成 Intellisense 功能發生問題,這無法透過手動去對 SQL Server Management Studio 針對環境設定而獲得改善。由於 SQL Server 2008R2 距離目前 2017 已經很多年了,所以直接讓 SQL Server 2008R2 更新了 Service Pack3 而解決 Intellisense 失效的問題。

參考:

2017年7月28日 星期五

最恐怖的鬼故事


就在即將進入農曆七月前,我聽到一個最可怕的鬼故事。

小明跑到一家書店,問老闆說,你們這有沒有最可怕的故事書。老闆推推眼鏡,然後冷冷的回答說,有。於是從書架上取下一本書,並告訴小明,這本故事書很特別,每個章節都很恐怖,要價 1000元,你要買嗎?

小明沒有猶豫很久,就跟老闆說,我要買。當老闆把書交給小明之際,低聲的對小明說,有一件事你一定要特別注意,就是「千萬不要翻到最後一頁,千萬要記住喔」。

2017年7月26日 星期三

調整Bootstrap 裡的 input-group 高度

Bootstrap 裡使用  input-group ,可以很輕易的讓使用者建構出鮮明清爽的輸入項目。

但有發現嗎?在備註二,如果內容的文字一多,就會出現這種爆表的現象。

目前找到一個有效的解決方式,就是透過調整 CSS ,針對 .input-group-btn, .input-group .form-control 這些 class 設定  height: auto
但單單僅這樣設定,反而造成其他尚未有 input 內容的畫面變得很乾扁。

所以再針對每一個項目設定了最小高度,例如:min-height: 30px;

經由這樣的設定後,整體呈現總算有及格了。


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="http://getbootstrap.com/favicon.ico">    
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
    
    <style>
        .input-group-addon {
            /*設定每個 input-group-addon 都有固定寬度 */
            min-width:180px;
        }

        .input-group{
            padding-bottom:2px;
        }

        /*自動根據內容調整高度,同時設定最小高度*/
        .input-group-btn, .input-group .form-control
        {
            height: auto;
            min-height: 30px;
        }
    </style>

</head>
<body>
    <form id="form1" runat="server">
    <div class="container">

        <div>
        &nbsp;
        </div>

        <div class="row">
            <div class="col-md-6">
                <div class="input-group">
                    <span class="input-group-addon">學生姓名</span>
                        <asp:Label id="lb_學生姓名" runat="server"  CssClass="form-control" Text="張小明" ></asp:Label> 
                </div>
            </div>
            <div class="col-md-6">
                <div class="input-group">
                    <span class="input-group-addon">年級班級</span>
                        <asp:Label id="lb_班級" runat="server"  CssClass="form-control" Text="五年一班" ></asp:Label> 
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-md-6">
                <div class="input-group">
                    <span class="input-group-addon">備註一</span>
                        <asp:Label id="lb_備註一" runat="server"  CssClass="form-control" Text="" ></asp:Label> 
                </div>
            </div>
            <div class="col-md-6">
                <div class="input-group">
                    <span class="input-group-addon">備註二</span>
                        <asp:Label id="lb_備註二" runat="server"  CssClass="form-control" Text="2014年校慶運動會跑步第一名<br>2015年校慶運動會跑步第二名<br>2016年全國運動會跑步第一名" ></asp:Label> 
                </div>
            </div>
        </div>
    </div>
    </form>
</body>
</html>



參考:.input-group-lg causes textarea's height to shrink to a single line