ورود

View Full Version : سوال: شمارش تعداد حروف و کلمات



jaza_sa
دوشنبه 14 مرداد 1387, 14:26 عصر
سلام

میخواستم بدنم چطور باید تعداد حروف و کلمات
یک جمله رو که به یک جدول اضافه میشه رو بدست آورد و در دیتابیس ذخیره کرد ؟
باید از چه تابعی داخل " تریگر " استفاده کرد ؟

باتشکر

ASKaffash
دوشنبه 14 مرداد 1387, 15:07 عصر
سلام
اینطوری :
Select Len('Hello')

jaza_sa
دوشنبه 14 مرداد 1387, 15:22 عصر
متشکرم
ولی این کد برای شمارش تعداد حروف هست!!!
حالا برای شمارش تعداد کلامات باید چیکار کرد؟

jaza_sa
دوشنبه 14 مرداد 1387, 16:29 عصر
یافتم
برای شمارش کلمات باید یک Function از نوع Scaler ساخت و برای شمارش کلمات ، این Function رو صدا زد
نحوه تعریف :


Create FUNCTION Count_Word
(
@str NVARCHAR(100)
)
RETURNS INT
AS
BEGIN

DECLARE @Index INT
DECLARE @Char CHAR(1)
DECLARE @PrevChar CHAR(1)
DECLARE @WordCount INT

SET @Index = 1
SET @WordCount = 0

WHILE @Index <= LEN(@str)
BEGIN
SET @Char = SUBSTRING(@str, @Index, 1)
SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
ELSE SUBSTRING(@str, @Index - 1, 1)
END

IF @PrevChar = ' ' AND @Char != ' '
SET @WordCount = @WordCount + 1

SET @Index = @Index + 1
END

RETURN @WordCount

ENDنحوه صدا زدن :

SELECT dbo.Count_Word('محاسبه تعداد کلمات یک عبارت')

-------------------------------------------------------
مقدار بازگشتی : 5

jaza_sa
دوشنبه 14 مرداد 1387, 16:53 عصر
همچنین
برای شمارش حروف یک عبارت بدون درنظر گرفتن فاصله و ... (هر کاراکتری که ما میخوایم مثل ، ؛ ؟ ! و ...) هم باید یک Function تعریف کنیم
نحوه تعریف :

CREATE FUNCTION [dbo].[Count_Letter]
(
@str NVARCHAR(100)
)
RETURNS INT
AS
BEGIN

DECLARE @Index INT
DECLARE @Char CHAR(1)
DECLARE @LetterCount INT

SET @Index = 1
SET @LetterCount = 0

WHILE @Index <= LEN(@str)
BEGIN
SET @Char = SUBSTRING(@str, @Index, 1)

IF @Char != ' '
SET @LetterCount = @LetterCount + 1

SET @Index = @Index + 1
END

RETURN @LetterCount

ENDنحوه فراخوانی :

SELECT dbo.Count_Letter('محاسبه تعداد حروف یک عبارت')

-------------------------------------------------------
مقدار بازگشتی : 22